[ros-diffs] [cfinck] 51069: [SHELL32] Thomas Faber - Fix memory leak in RenderHDROP. Modifications by me to have just a single return statement in the function. See issue #5998 for more details.

cfinck at svn.reactos.org cfinck at svn.reactos.org
Wed Mar 16 16:46:37 UTC 2011


Author: cfinck
Date: Wed Mar 16 16:46:37 2011
New Revision: 51069

URL: http://svn.reactos.org/svn/reactos?rev=51069&view=rev
Log:
[SHELL32]
Thomas Faber
- Fix memory leak in RenderHDROP.
  Modifications by me to have just a single return statement in the function.

See issue #5998 for more details.

Modified:
    trunk/reactos/dll/win32/shell32/clipboard.c

Modified: trunk/reactos/dll/win32/shell32/clipboard.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/clipboard.c?rev=51069&r1=51068&r2=51069&view=diff
==============================================================================
--- trunk/reactos/dll/win32/shell32/clipboard.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/clipboard.c [iso-8859-1] Wed Mar 16 16:46:37 2011
@@ -49,15 +49,16 @@
 	UINT i;
 	int size = 0;
 	WCHAR wszFileName[MAX_PATH];
-	HGLOBAL hGlobal;
+	HGLOBAL hGlobal = NULL;
 	DROPFILES *pDropFiles;
 	int offset;
 	LPITEMIDLIST *pidls;
 
 	TRACE("(%p,%p,%u)\n", pidlRoot, apidl, cidl);
 
-	pidls = HeapAlloc(GetProcessHeap(), 0, cidl * sizeof *pidls);
-	if (!pidls) return NULL;
+	pidls = HeapAlloc(GetProcessHeap(), 0, cidl * sizeof(*pidls));
+	if (!pidls)
+		goto cleanup;
 
 	/* get the size needed */
 	size = sizeof(DROPFILES);
@@ -73,7 +74,8 @@
 
 	/* Fill the structure */
 	hGlobal = GlobalAlloc(GHND|GMEM_SHARE, size);
-	if(!hGlobal) return hGlobal;
+	if(!hGlobal)
+		goto cleanup;
 
         pDropFiles = (DROPFILES *)GlobalLock(hGlobal);
 	offset = (sizeof(DROPFILES) + sizeof(WCHAR) - 1) / sizeof(WCHAR);
@@ -91,7 +93,9 @@
 	((WCHAR*)pDropFiles)[offset] = 0;
 	GlobalUnlock(hGlobal);
 
-	HeapFree(GetProcessHeap(), 0, pidls);
+cleanup:
+	if(pidls)
+		HeapFree(GetProcessHeap(), 0, pidls);
 
 	return hGlobal;
 }




More information about the Ros-diffs mailing list