SEGV when application creates string menu item with NULL text

Troy Rollo wine at troy.rollo.name
Sun Sep 21 22:27:18 CDT 2003


While rude, this is possible under Windows, but results in a SEGV under Wine. 
The following patch eliminates the SEGV.

Index: controls/menu.c
===================================================================
RCS file: /home/wine/wine/controls/menu.c,v
retrieving revision 1.163
diff -u -r1.163 menu.c
--- controls/menu.c	7 Mar 2003 23:03:27 -0000	1.163
+++ controls/menu.c	22 Sep 2003 03:26:10 -0000
@@ -938,7 +938,10 @@
     if (!(lpitem->fType & MF_SYSMENU) && IS_STRING_ITEM( lpitem->fType ))
     {   SIZE size;
 
-	GetTextExtentPoint32W(hdc, lpitem->text,  strlenW(lpitem->text), &size);
+	if (lpitem->text)
+	    GetTextExtentPoint32W(hdc, lpitem->text,  strlenW(lpitem->text), &size);
+	else
+	    size.cx = size.cy = 0;
 
 	lpitem->rect.right  += size.cx;
 	if (TWEAK_WineLook == WIN31_LOOK)
@@ -951,6 +954,10 @@
 	{
 	     lpitem->rect.right += MENU_BAR_ITEMS_SPACE;
 	}
+	else if (!lpitem->text)
+	{
+		/* Do nothing */
+	}
 	else if ((p = strchrW( lpitem->text, '\t' )) != NULL)
 	{
 	    /* Item contains a tab (only meaningful in popup menus) */
@@ -1360,7 +1367,7 @@
 
     }
     /* No bitmap - process text if present */
-    else if (IS_STRING_ITEM(lpitem->fType))
+    else if (IS_STRING_ITEM(lpitem->fType) && lpitem->text)
     {
 	register int i;
 	HFONT hfontOld = 0;




More information about the wine-patches mailing list