Nikolay Sivov : dwrite: Correct reference count behavior for font face interface.

Alexandre Julliard julliard at winehq.org
Mon Oct 15 14:29:07 CDT 2012


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Sat Oct 13 01:22:05 2012 -0400

dwrite: Correct reference count behavior for font face interface.

---

 dlls/dwrite/font.c       |    3 +--
 dlls/dwrite/tests/font.c |    6 +++---
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index e7beee5..d145df0 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -352,6 +352,7 @@ static ULONG WINAPI dwritefont_Release(IDWriteFont *iface)
 
     if (!ref)
     {
+        if (This->face) IDWriteFontFace_Release(This->face);
         IDWriteFontFamily_Release(This->family);
         heap_free(This);
     }
@@ -442,8 +443,6 @@ static HRESULT WINAPI dwritefont_CreateFontFace(IDWriteFont *iface, IDWriteFontF
     {
         HRESULT hr = create_fontface(&This->face);
         if (FAILED(hr)) return hr;
-        *face = This->face;
-        return hr;
     }
 
     *face = This->face;
diff --git a/dlls/dwrite/tests/font.c b/dlls/dwrite/tests/font.c
index 70c714c..83c19da 100644
--- a/dlls/dwrite/tests/font.c
+++ b/dlls/dwrite/tests/font.c
@@ -433,17 +433,17 @@ if (0) /* crashes on native */
     hr = IDWriteFont_CreateFontFace(font, &fontface);
     ok(hr == S_OK, "got 0x%08x\n", hr);
     EXPECT_REF(font, 1);
-    EXPECT_REF(fontface, 1);
+    EXPECT_REF(fontface, 2);
 
     hr = IDWriteFont_CreateFontFace(font, &fontface2);
     ok(hr == S_OK, "got 0x%08x\n", hr);
     ok(fontface == fontface2, "got %p, was %p\n", fontface2, fontface);
-    EXPECT_REF(fontface, 2);
+    EXPECT_REF(fontface, 3);
     EXPECT_REF(font, 1);
 
     IDWriteFontFace_AddRef(fontface);
     EXPECT_REF(font, 1);
-    EXPECT_REF(fontface, 3);
+    EXPECT_REF(fontface, 4);
     IDWriteFontFace_Release(fontface);
     IDWriteFontFace_Release(fontface);
 




More information about the wine-cvs mailing list