Module: wine Branch: master Commit: 7524db8937ec6ae94e690dda41cd363d4c37925a URL: http://source.winehq.org/git/wine.git/?a=commit;h=7524db8937ec6ae94e690dda41...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Tue May 30 10:10:59 2017 +0300
dwrite: Grab font data reference when adding replacement.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/dwrite/font.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c index a877ad0..0332587 100644 --- a/dlls/dwrite/font.c +++ b/dlls/dwrite/font.c @@ -405,6 +405,11 @@ static inline void* get_fontface_colr(struct dwrite_fontface *fontface) return get_fontface_table(&fontface->IDWriteFontFace4_iface, MS_COLR_TAG, &fontface->colr); }
+static void addref_font_data(struct dwrite_font_data *data) +{ + InterlockedIncrement(&data->ref); +} + static void release_font_data(struct dwrite_font_data *data) { int i; @@ -1762,7 +1767,7 @@ static HRESULT create_font(struct dwrite_fontfamily *family, UINT32 index, IDWri IDWriteFontFamily1_AddRef(&family->IDWriteFontFamily1_iface); This->data = family->data->fonts[index]; This->style = This->data->style; - InterlockedIncrement(&This->data->ref); + addref_font_data(This->data);
*font = &This->IDWriteFont3_iface;
@@ -2135,7 +2140,7 @@ static HRESULT WINAPI dwritefontfamily_GetMatchingFonts(IDWriteFontFamily1 *ifac for (i = 0; i < This->data->font_count; i++) { if (!func || func(This->data->fonts[i])) { fonts->fonts[fonts->font_count] = This->data->fonts[i]; - InterlockedIncrement(&This->data->fonts[i]->ref); + addref_font_data(This->data->fonts[i]); fonts->font_count++; } } @@ -3554,8 +3559,10 @@ static BOOL fontcollection_add_replacement(struct dwrite_fontcollection *collect struct dwrite_fontfamily_data *replacement = collection->family_data[i]; WCHAR nameW[255];
- for (i = 0; i < replacement->font_count; i++) + for (i = 0; i < replacement->font_count; i++) { fontfamily_add_font(target, replacement->fonts[i]); + addref_font_data(replacement->fonts[i]); + }
fontcollection_add_family(collection, target); fontstrings_get_en_string(replacement->familyname, nameW, sizeof(nameW)/sizeof(WCHAR));