Nikolay Sivov : dwrite: Fix error code returned by GetFontFromFontFace().

Alexandre Julliard julliard at wine.codeweavers.com
Thu Feb 19 09:17:34 CST 2015


Module: wine
Branch: master
Commit: 5196be7706ae4189edb3b67cf441d7a1077539ce
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=5196be7706ae4189edb3b67cf441d7a1077539ce

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Wed Feb 18 22:46:10 2015 +0300

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 e3480ec..527fa5d 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 ca31f29..e00e788 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)




More information about the wine-cvs mailing list