[PATCH] gdiplus/tests: Fix a font test crash when "MS Shell Dlg" is not found.

Francois Gouget fgouget at codeweavers.com
Thu Aug 26 09:40:05 CDT 2021


When "MS Shell Dlg" is missing GdipCreateFontFamilyFromName() leaves
the GpFontFamily* pointer uninitialised. So initialize it to NULL in
order to get clean failures instead of a crash.

Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
---
We used to just get a failure, probably because that pointer happened
to be NULL. But that changed on August 23:
https://test.winehq.org/data/patterns.html#gdiplus:font

The next question is "why do we get a failure in the first place?".
That's the subject of bug 51685:
https://bugs.winehq.org/show_bug.cgi?id=51685

Finally there are other calls to GdipCreateFontFamilyFromName() but they
either check for failure or try to load Tahoma which is a built-in Wine
font. So it did not feel necessary to check for failures everywhere.
---
 dlls/gdiplus/tests/font.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/dlls/gdiplus/tests/font.c b/dlls/gdiplus/tests/font.c
index 4ffa9e823fc..031e4688c6c 100644
--- a/dlls/gdiplus/tests/font.c
+++ b/dlls/gdiplus/tests/font.c
@@ -883,8 +883,10 @@ static void test_font_substitution(void)
     ok(lstrcmpA(lf.lfFaceName, "MS Shell Dlg") != 0, "expected substitution of MS Shell Dlg\n");
     GdipDeleteFont(font);
 
+    family = NULL;
     status = GdipCreateFontFamilyFromName(L"MS Shell Dlg", NULL, &family);
     expect(Ok, status);
+    font = NULL;
     status = GdipCreateFont(family, 12, FontStyleRegular, UnitPoint, &font);
     expect(Ok, status);
     memset(&lf, 0xfe, sizeof(lf));
-- 
2.20.1



More information about the wine-devel mailing list