shell32.iconcache.c: Fix two memory leaks
Rolf Kalbermatter
rolf.kalbermatter at citeng.com
Fri Nov 28 02:12:55 CST 2003
Changelog
dlls/shell32/iconcache.c
Fix two memory leaks. Found by Dietrich Teickner from Odin.
Rolf Kalbermatter
Index: dlls/shell32/iconcache.c
===================================================================
RCS file: /home/wine/wine/dlls/shell32/iconcache.c,v
retrieving revision 1.69
diff -u -r1.69 iconcache.c
--- dlls/shell32/iconcache.c 17 Sep 2003 20:15:21 -0000 1.69
+++ dlls/shell32/iconcache.c 28 Nov 2003 08:06:59 -0000
@@ -91,7 +91,7 @@
* SIC_IconAppend [internal]
*
* NOTES
- * appends a icon pair to the end of the cache
+ * appends an icon pair to the end of the cache
*/
static INT SIC_IconAppend (LPCSTR sSourceFile, INT dwSourceIndex, HICON hSmallIcon, HICON hBigIcon)
{ LPSIC_ENTRY lpsice;
@@ -101,9 +101,9 @@
lpsice = (LPSIC_ENTRY) SHAlloc (sizeof (SIC_ENTRY));
- path = PathFindFileNameA(sSourceFile);
- lpsice->sSourceFile = HeapAlloc( GetProcessHeap(), 0, strlen(path)+1 );
- strcpy( lpsice->sSourceFile, path );
+ path = PathFindFileNameA(sSourceFile);
+ lpsice->sSourceFile = HeapAlloc( GetProcessHeap(), 0, strlen(path)+1 );
+ strcpy( lpsice->sSourceFile, path );
lpsice->dwSourceIndex = dwSourceIndex;
@@ -112,6 +112,7 @@
index = DPA_InsertPtr(sic_hdpa, 0x7fff, lpsice);
if ( INVALID_INDEX == index )
{
+ HeapFree(GetProcessHeap(), 0, lpsice->sSourceFile);
SHFree(lpsice);
ret = INVALID_INDEX;
}
@@ -269,8 +270,9 @@
*/
static INT CALLBACK sic_free( LPVOID ptr, LPVOID lparam )
{
- SHFree(ptr);
- return TRUE;
+ HeapFree(GetProcessHeap(), 0, (LPSIC_ENTRY)ptr->sSourceFile);
+ SHFree(ptr);
+ return TRUE;
}
void SIC_Destroy(void)
More information about the wine-patches
mailing list