From 5196be7706ae4189edb3b67cf441d7a1077539ce Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Wed, 18 Feb 2015 22:46:10 +0300 Subject: [PATCH] dwrite: Fix error code returned by GetFontFromFontFace(). --- dlls/dwrite/font.c | 2 +- dlls/dwrite/tests/font.c | 23 +++++++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c index e3480ec2b2a..527fa5d9420 100644 --- a/dlls/dwrite/font.c +++ b/dlls/dwrite/font.c @@ -1514,7 +1514,7 @@ static HRESULT WINAPI dwritefontcollection_GetFontFromFontFace(IDWriteFontCollec } if (!found_font) - return E_INVALIDARG; + return DWRITE_E_NOFONT; hr = create_fontfamily(found_family, iface, &family); if (FAILED(hr)) diff --git a/dlls/dwrite/tests/font.c b/dlls/dwrite/tests/font.c index ca31f29134e..e00e78854dc 100644 --- a/dlls/dwrite/tests/font.c +++ b/dlls/dwrite/tests/font.c @@ -2028,6 +2028,7 @@ static void test_GetFontFromFontFace(void) IDWriteFont *font, *font2, *font3; IDWriteFontFamily *family; IDWriteFactory *factory; + IDWriteFontFile *file; HRESULT hr; factory = create_factory(); @@ -2064,14 +2065,32 @@ static void test_GetFontFromFontFace(void) ok(hr == S_OK, "got 0x%08x\n", hr); ok(fontface2 == fontface, "got %p, %p\n", fontface2, fontface); IDWriteFontFace_Release(fontface2); + IDWriteFontFace_Release(fontface); + IDWriteFont_Release(font3); + IDWriteFactory_Release(factory); + + /* fontface that wasn't created from this collection */ + factory = create_factory(); + create_testfontfile(test_fontfile); + + hr = IDWriteFactory_CreateFontFileReference(factory, test_fontfile, NULL, &file); + ok(hr == S_OK, "got 0x%08x\n",hr); + + hr = IDWriteFactory_CreateFontFace(factory, DWRITE_FONT_FACE_TYPE_TRUETYPE, 1, &file, 0, DWRITE_FONT_SIMULATIONS_NONE, &fontface); + ok(hr == S_OK, "got 0x%08x\n", hr); + IDWriteFontFile_Release(file); + + hr = IDWriteFontCollection_GetFontFromFontFace(collection, fontface, &font3); + ok(hr == DWRITE_E_NOFONT, "got 0x%08x\n", hr); + ok(font3 == NULL, "got %p\n", font3); + IDWriteFontFace_Release(fontface); IDWriteFont_Release(font); IDWriteFont_Release(font2); - IDWriteFont_Release(font3); - IDWriteFontFace_Release(fontface); IDWriteFontFamily_Release(family); IDWriteFontCollection_Release(collection); IDWriteFactory_Release(factory); + DeleteFileW(test_fontfile); } static IDWriteFont *get_tahoma_instance(IDWriteFactory *factory, DWRITE_FONT_STYLE style)