Nikolay Sivov : dwrite: Grab font data reference when adding replacement.
Module: wine Branch: master Commit: 7524db8937ec6ae94e690dda41cd363d4c37925a URL: http://source.winehq.org/git/wine.git/?a=commit;h=7524db8937ec6ae94e690dda41... Author: Nikolay Sivov <nsivov(a)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(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)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));
participants (1)
-
Alexandre Julliard