Hans Leidekker : gdi32: GetCharABCWidthsW should not crash on a NULL
handle .
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Apr 10 09:32:51 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: c4f4b01b058d840c350581a58671d9f531d0c310
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=c4f4b01b058d840c350581a58671d9f531d0c310
Author: Hans Leidekker <hans at it.vu.nl>
Date: Sat Apr 8 22:27:34 2006 +0200
gdi32: GetCharABCWidthsW should not crash on a NULL handle.
---
dlls/gdi/font.c | 2 ++
dlls/gdi/tests/font.c | 13 +++++++++++++
2 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/dlls/gdi/font.c b/dlls/gdi/font.c
index ffebd7e..1e17d5a 100644
--- a/dlls/gdi/font.c
+++ b/dlls/gdi/font.c
@@ -2330,6 +2330,8 @@ BOOL WINAPI GetCharABCWidthsW( HDC hdc,
unsigned int i;
BOOL ret = FALSE;
+ if (!dc) return FALSE;
+
if(dc->gdiFont)
ret = WineEngGetCharABCWidths( dc->gdiFont, firstChar, lastChar, abc );
else
diff --git a/dlls/gdi/tests/font.c b/dlls/gdi/tests/font.c
index 9ed33b7..ef0b9b2 100644
--- a/dlls/gdi/tests/font.c
+++ b/dlls/gdi/tests/font.c
@@ -323,6 +323,18 @@ static void test_GdiGetCharDimensions(vo
DeleteDC(hdc);
}
+static void test_GetCharABCWidthsW(void)
+{
+ BOOL ret;
+ ABC abc[1];
+ typedef BOOL (WINAPI *fnGetCharABCWidthsW)(HDC hdc, UINT first, UINT last, LPABC abc);
+ fnGetCharABCWidthsW GetCharABCWidthsW = (fnGetCharABCWidthsW)GetProcAddress(LoadLibrary("gdi32"), "GetCharABCWidthsW");
+ if (!GetCharABCWidthsW) return;
+
+ ret = GetCharABCWidthsW(NULL, 'a', 'a', abc);
+ ok(!ret, "GetCharABCWidthsW should have returned FALSE\n");
+}
+
static void test_text_extents(void)
{
LOGFONTA lf;
@@ -353,5 +365,6 @@ START_TEST(font)
test_bitmap_font();
test_bitmap_font_metrics();
test_GdiGetCharDimensions();
+ test_GetCharABCWidthsW();
test_text_extents();
}
More information about the wine-cvs
mailing list