diff --git a/dlls/dwrite/main.c b/dlls/dwrite/main.c index 033e89ae221..0379febfc07 100644 --- a/dlls/dwrite/main.c +++ b/dlls/dwrite/main.c @@ -491,11 +491,14 @@ static HRESULT WINAPI dwritefactory_CreateCustomFontCollection(IDWriteFactory *i static HRESULT WINAPI dwritefactory_RegisterFontCollectionLoader(IDWriteFactory *iface, IDWriteFontCollectionLoader *loader) { - int i; struct dwritefactory *This = impl_from_IDWriteFactory(iface); + int i; TRACE("(%p)->(%p)\n", This, loader); + if (!loader) + return E_INVALIDARG; + for (i = 0; i < This->loader_count; i++) if (This->loaders[i] == loader) return DWRITE_E_ALREADYREGISTERED; @@ -527,11 +530,14 @@ static HRESULT WINAPI dwritefactory_RegisterFontCollectionLoader(IDWriteFactory static HRESULT WINAPI dwritefactory_UnregisterFontCollectionLoader(IDWriteFactory *iface, IDWriteFontCollectionLoader *loader) { - int i; struct dwritefactory *This = impl_from_IDWriteFactory(iface); + int i; TRACE("(%p)->(%p)\n", This, loader); + if (!loader) + return E_INVALIDARG; + for (i = 0; i < This->loader_count; i++) if (This->loaders[i] == loader) break; if (i == This->loader_count) diff --git a/dlls/dwrite/tests/font.c b/dlls/dwrite/tests/font.c index 945bfbfa186..efe3743bb52 100644 --- a/dlls/dwrite/tests/font.c +++ b/dlls/dwrite/tests/font.c @@ -855,6 +855,12 @@ static void test_CustomFontCollection(void) IDWriteFontCollectionLoader collection2 = { &dwritefontcollectionloadervtbl }; HRESULT hr; + hr = IDWriteFactory_RegisterFontCollectionLoader(factory, NULL); + ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + + hr = IDWriteFactory_UnregisterFontCollectionLoader(factory, NULL); + ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + hr = IDWriteFactory_RegisterFontCollectionLoader(factory, &collection); ok(hr == S_OK, "got 0x%08x\n", hr); hr = IDWriteFactory_RegisterFontCollectionLoader(factory, &collection2);