Francois Gouget : gdiplus: GdipGetFamilyName() should not crash when given a NULL name.

Alexandre Julliard julliard at winehq.org
Fri Aug 27 15:03:35 CDT 2021


Module: wine
Branch: master
Commit: ad663360fae6b4a9ee3d7786857404e0a4917329
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=ad663360fae6b4a9ee3d7786857404e0a4917329

Author: Francois Gouget <fgouget at 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 at codeweavers.com>
Signed-off-by: Esme Povirk <esme at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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 64604367da3..44431ea2ac8 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));




More information about the wine-cvs mailing list