Francois Gouget : gdiplus: GdipGetFamilyName() should not crash when given a NULL name.
Module: wine Branch: oldstable Commit: 7a9898344d61ad4d8619f2bbb3ffe037f180ff3b URL: https://source.winehq.org/git/wine.git/?a=commit;h=7a9898344d61ad4d8619f2bbb... Author: Francois Gouget <fgouget(a)codeweavers.com> Date: Thu Aug 26 13:16:12 2021 +0200 gdiplus: GdipGetFamilyName() should not crash when given a NULL name. It used to crash on Windows XP and Vista but does not since Windows 7. Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com> Signed-off-by: Esme Povirk <esme(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit ad663360fae6b4a9ee3d7786857404e0a4917329) Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> --- dlls/gdiplus/font.c | 7 +++++-- dlls/gdiplus/tests/font.c | 9 +++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dlls/gdiplus/font.c b/dlls/gdiplus/font.c index c18e5702ca2..4d0a84943ea 100644 --- a/dlls/gdiplus/font.c +++ b/dlls/gdiplus/font.c @@ -798,17 +798,20 @@ GpStatus WINGDIPAPI GdipCloneFontFamily(GpFontFamily *family, GpFontFamily **clo * FAILURE: InvalidParameter if family is NULL * * NOTES - * If name is a NULL ptr, then both XP and Vista will crash (so we do as well) + * If name is NULL, XP and Vista crash but not Windows 7+ */ GpStatus WINGDIPAPI GdipGetFamilyName (GDIPCONST GpFontFamily *family, WCHAR *name, LANGID language) { static int lang_fixme; + TRACE("%p, %p, %d\n", family, name, language); + if (family == NULL) return InvalidParameter; - TRACE("%p, %p, %d\n", family, name, language); + if (name == NULL) + return Ok; if (language != LANG_NEUTRAL && !lang_fixme++) FIXME("No support for handling of multiple languages!\n"); diff --git a/dlls/gdiplus/tests/font.c b/dlls/gdiplus/tests/font.c index b208989c054..4ffa9e823fc 100644 --- a/dlls/gdiplus/tests/font.c +++ b/dlls/gdiplus/tests/font.c @@ -388,12 +388,9 @@ static void test_fontfamily (void) expect (Ok, stat); expect (0, lstrcmpiW(itsName, L"Tahoma")); - if (0) - { - /* Crashes on Windows XP SP2, Vista, and so Wine as well */ - stat = GdipGetFamilyName (family, NULL, LANG_NEUTRAL); - expect (Ok, stat); - } + /* Crashes on Windows XP SP2 and Vista */ + stat = GdipGetFamilyName (family, NULL, LANG_NEUTRAL); + expect (Ok, stat); /* Make sure we don't read old data */ ZeroMemory (itsName, sizeof(itsName));
participants (1)
-
Alexandre Julliard