diff --git a/src/win32/cairo-dwrite-font.cpp b/src/win32/cairo-dwrite-font.cpp index 36d6b5c7b..a69adec0b 100644 --- a/src/win32/cairo-dwrite-font.cpp +++ b/src/win32/cairo-dwrite-font.cpp @@ -845,15 +845,18 @@ public: : mCairoPath(aCairoPath) , mMatrix(matrix) {} - // IUnknown interface IFACEMETHOD (QueryInterface)(IID const& iid, OUT void** ppObject) noexcept override { - if (iid != __uuidof(IDWriteGeometrySink)) - return E_NOINTERFACE; + if (iid == __uuidof (IUnknown) || + iid == __uuidof (IDWriteGeometrySink)) + { + AddRef(); + *ppObject = this; + return S_OK; + } - *ppObject = static_cast(this); - - return S_OK; + *ppObject = nullptr; + return E_NOINTERFACE; } IFACEMETHOD_(ULONG, AddRef)() noexcept override