shell32: Write-strings warning fix

Robert Shearman rob at codeweavers.com
Wed Jun 7 14:01:41 CDT 2006


Andrew Talbot wrote:

>Changelog:
>    shell32: Write-strings warning fix.
>
>diff -urN a/dlls/shell32/shlview.c b/dlls/shell32/shlview.c
>--- a/dlls/shell32/shlview.c	2006-05-23 17:24:50.000000000 +0100
>+++ b/dlls/shell32/shlview.c	2006-06-07 19:37:41.000000000 +0100
>@@ -779,7 +779,9 @@
> */
> 
> static void ShellView_MergeViewMenu(IShellViewImpl * This, HMENU hSubMenu)
>-{	MENUITEMINFOA	mii;
>+{
>+	MENUITEMINFOA	mii;
>+	static CHAR mii_type_data[] = "View";
> 
> 	TRACE("(%p)->(submenu=%p)\n",This,hSubMenu);
> 
>@@ -791,7 +793,7 @@
> 	  mii.cbSize = sizeof(mii);
> 	  mii.fMask = MIIM_SUBMENU | MIIM_TYPE | MIIM_DATA;
> 	  mii.fType = MFT_STRING;
>-	  mii.dwTypeData = "View";
>+          mii.dwTypeData = mii_type_data;
> 	  mii.hSubMenu = LoadMenuA(shell32_hInstance, "MENU_001");
> 	  InsertMenuItemA(hSubMenu, FCIDM_MENU_VIEW_SEP_OPTIONS, FALSE, &mii);
> 	}
>

Sorry, this is wrong. If InsertMenuItemA writes to the string then it 
will be corrupted and will display the wrong thing for further uses in 
the process. It is therefore better to cast it from a "const char *" 
into a "char *" or to make it a non-static array at the top of the function.

I think the first choice of keeping it a "const char *" is the best 
choice in this case.

-- 
Rob Shearman




More information about the wine-devel mailing list