ChangeSet ID: 16604 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@wine.codeweavers.com 2005/03/14 11:13:45 Modified files: dlls/user : message.c lstr.c Log message: Peter Berg Larsen Assorted memleak fixes. Found on Michael Stefaniuc smatch list. Patch: http://cvs.winehq.org/patch.py?id=16604 Old revision New revision Changes Path 1.69 1.70 +16 -6 wine/dlls/user/message.c 1.32 1.33 +2 -2 wine/dlls/user/lstr.c Index: wine/dlls/user/message.c diff -u -p wine/dlls/user/message.c:1.69 wine/dlls/user/message.c:1.70 --- wine/dlls/user/message.c:1.69 Thu Jun 20 00:58:34 2013 +++ wine/dlls/user/message.c Thu Jun 20 00:58:34 2013 @@ -1435,13 +1435,18 @@ static BOOL unpack_dde_message( HWND hwn TRACE( "recv ddepack %u %x\n", size, uiHi ); if (size) { - hMem = GlobalAlloc( GMEM_MOVEABLE|GMEM_DDESHARE, size ); - if (hMem && (ptr = GlobalLock( hMem ))) + if (!(hMem = GlobalAlloc( GMEM_MOVEABLE|GMEM_DDESHARE, size ))) + return FALSE; + if ((ptr = GlobalLock( hMem ))) { memcpy( ptr, *buffer, size ); GlobalUnlock( hMem ); } - else return FALSE; + else + { + GlobalFree( hMem ); + return FALSE; + } } uiLo = (UINT)hMem; @@ -1451,8 +1456,8 @@ static BOOL unpack_dde_message( HWND hwn if (size) { if (!buffer || !*buffer) return FALSE; - hMem = GlobalAlloc( GMEM_MOVEABLE|GMEM_DDESHARE, size ); - if (hMem && (ptr = GlobalLock( hMem ))) + if (!(hMem = GlobalAlloc( GMEM_MOVEABLE|GMEM_DDESHARE, size ))) return FALSE; + if ((ptr = GlobalLock( hMem ))) { memcpy( ptr, *buffer, size ); GlobalUnlock( hMem ); @@ -1462,7 +1467,12 @@ static BOOL unpack_dde_message( HWND hwn GlobalFree( hMem ); return FALSE; } - } + } + else + { + GlobalFree( hMem ); + return FALSE; + } } else return FALSE; *lparam = (LPARAM)hMem; break; Index: wine/dlls/user/lstr.c diff -u -p wine/dlls/user/lstr.c:1.32 wine/dlls/user/lstr.c:1.33 --- wine/dlls/user/lstr.c:1.32 Thu Jun 20 00:58:34 2013 +++ wine/dlls/user/lstr.c Thu Jun 20 00:58:34 2013 @@ -625,11 +625,11 @@ DWORD WINAPI FormatMessage16( from = HeapAlloc( GetProcessHeap(), 0, strlen(source)+1 ); strcpy( from, source ); } - if (dwFlags & FORMAT_MESSAGE_FROM_SYSTEM) { + else if (dwFlags & FORMAT_MESSAGE_FROM_SYSTEM) { from = HeapAlloc( GetProcessHeap(),0,200 ); sprintf(from,"Systemmessage, messageid = 0x%08x\n",dwMessageId); } - if (dwFlags & FORMAT_MESSAGE_FROM_HMODULE) { + else if (dwFlags & FORMAT_MESSAGE_FROM_HMODULE) { INT16 bufsize; HINSTANCE16 hinst16 = ((HINSTANCE16)lpSource & 0xffff);