Nikolay Sivov : dwrite: Release system collection pointer after using it, not before.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Dec 16 15:06:06 CST 2014
Module: wine
Branch: master
Commit: 8dfe0ff251cfe7a098c456e3d6c2e6643f6ed5d0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8dfe0ff251cfe7a098c456e3d6c2e6643f6ed5d0
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Tue Dec 16 17:59:44 2014 +0300
dwrite: Release system collection pointer after using it, not before.
---
dlls/dwrite/main.c | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/dlls/dwrite/main.c b/dlls/dwrite/main.c
index c960b1e..eeb8728 100644
--- a/dlls/dwrite/main.c
+++ b/dlls/dwrite/main.c
@@ -921,18 +921,22 @@ static HRESULT WINAPI dwritefactory_CreateTextFormat(IDWriteFactory2 *iface, WCH
DWRITE_FONT_STRETCH stretch, FLOAT size, WCHAR const *locale, IDWriteTextFormat **format)
{
struct dwritefactory *This = impl_from_IDWriteFactory2(iface);
+ IDWriteFontCollection *syscollection = NULL;
+ HRESULT hr;
+
TRACE("(%p)->(%s %p %d %d %d %f %s %p)\n", This, debugstr_w(family_name), collection, weight, style, stretch,
size, debugstr_w(locale), format);
- if (!collection)
- {
- HRESULT hr = IDWriteFactory2_GetSystemFontCollection(iface, &collection, FALSE);
- if (hr != S_OK)
+ if (!collection) {
+ hr = IDWriteFactory2_GetSystemFontCollection(iface, &syscollection, FALSE);
+ if (FAILED(hr))
return hr;
- /* Our ref count is 1 too many, since we will add ref in create_textformat */
- IDWriteFontCollection_Release(This->system_collection);
}
- return create_textformat(family_name, collection, weight, style, stretch, size, locale, format);
+
+ hr = create_textformat(family_name, collection ? collection : syscollection, weight, style, stretch, size, locale, format);
+ if (syscollection)
+ IDWriteFontCollection_Release(syscollection);
+ return hr;
}
static HRESULT WINAPI dwritefactory_CreateTypography(IDWriteFactory2 *iface, IDWriteTypography **typography)
More information about the wine-cvs
mailing list