Module: wine Branch: master Commit: 438d115ec6c0d46b014406da19b14ed2402a27df URL: http://source.winehq.org/git/wine.git/?a=commit;h=438d115ec6c0d46b014406da19...
Author: Nikolay Sivov nsivov@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);