Aric Stewart : shell32: Handle NULL pName in ShellLink fnSetDescription.
Alexandre Julliard
julliard at winehq.org
Mon May 3 11:54:11 CDT 2010
Module: wine
Branch: master
Commit: 2554a55b342ebda81fdc2468e38d32830c50345b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2554a55b342ebda81fdc2468e38d32830c50345b
Author: Aric Stewart <aric at codeweavers.com>
Date: Fri Apr 30 10:04:19 2010 -0500
shell32: Handle NULL pName in ShellLink fnSetDescription.
---
dlls/shell32/shelllink.c | 26 ++++++++++++++++++--------
dlls/shell32/tests/shelllink.c | 9 +++++++++
2 files changed, 27 insertions(+), 8 deletions(-)
diff --git a/dlls/shell32/shelllink.c b/dlls/shell32/shelllink.c
index a7eb7f9..a052a18 100644
--- a/dlls/shell32/shelllink.c
+++ b/dlls/shell32/shelllink.c
@@ -1469,9 +1469,14 @@ static HRESULT WINAPI IShellLinkA_fnSetDescription(IShellLinkA * iface, LPCSTR p
TRACE("(%p)->(pName=%s)\n", This, pszName);
HeapFree(GetProcessHeap(), 0, This->sDescription);
- This->sDescription = HEAP_strdupAtoW( GetProcessHeap(), 0, pszName);
- if ( !This->sDescription )
- return E_OUTOFMEMORY;
+ if (pszName)
+ {
+ This->sDescription = HEAP_strdupAtoW( GetProcessHeap(), 0, pszName);
+ if ( !This->sDescription )
+ return E_OUTOFMEMORY;
+ }
+ else
+ This->sDescription = NULL;
This->bDirty = TRUE;
@@ -1852,12 +1857,17 @@ static HRESULT WINAPI IShellLinkW_fnSetDescription(IShellLinkW * iface, LPCWSTR
TRACE("(%p)->(desc=%s)\n",This, debugstr_w(pszName));
HeapFree(GetProcessHeap(), 0, This->sDescription);
- This->sDescription = HeapAlloc( GetProcessHeap(), 0,
- (lstrlenW( pszName )+1)*sizeof(WCHAR) );
- if ( !This->sDescription )
- return E_OUTOFMEMORY;
+ if (pszName)
+ {
+ This->sDescription = HeapAlloc( GetProcessHeap(), 0,
+ (lstrlenW( pszName )+1)*sizeof(WCHAR) );
+ if ( !This->sDescription )
+ return E_OUTOFMEMORY;
- lstrcpyW( This->sDescription, pszName );
+ lstrcpyW( This->sDescription, pszName );
+ }
+ else
+ This->sDescription = NULL;
This->bDirty = TRUE;
return S_OK;
diff --git a/dlls/shell32/tests/shelllink.c b/dlls/shell32/tests/shelllink.c
index 6c020ae..1b38b0d 100644
--- a/dlls/shell32/tests/shelllink.c
+++ b/dlls/shell32/tests/shelllink.c
@@ -136,6 +136,15 @@ static void test_get_set(void)
ok(r == S_OK, "GetDescription failed (0x%08x)\n", r);
ok(lstrcmp(buffer,str)==0, "GetDescription returned '%s'\n", buffer);
+ r = IShellLinkA_SetDescription(sl, NULL);
+ ok(r == S_OK, "SetDescription failed (0x%08x)\n", r);
+
+ strcpy(buffer,"garbage");
+ r = IShellLinkA_GetDescription(sl, buffer, sizeof(buffer));
+ ok(r == S_OK, "GetDescription failed (0x%08x)\n", r);
+ ok(*buffer=='\0' || broken(lstrcmp(buffer,str)==0), "GetDescription returned '%s'\n", buffer); /* NT4 */
+
+
/* Test Getting / Setting the work directory */
strcpy(buffer,"garbage");
r = IShellLinkA_GetWorkingDirectory(sl, buffer, sizeof(buffer));
More information about the wine-cvs
mailing list