ChangeLog Fix mem leak when GlobalReAlloc() fails. Index: ./dlls/ole32/hglobalstream.c =================================================================== RCS file: /var/cvs/wine/dlls/ole32/hglobalstream.c,v retrieving revision 1.19 diff -u -r1.19 hglobalstream.c --- ./dlls/ole32/hglobalstream.c 11 Sep 2003 03:06:25 -0000 1.19 +++ ./dlls/ole32/hglobalstream.c 25 Nov 2003 07:59:56 -0000 @@ -626,6 +626,7 @@ ULARGE_INTEGER libNewSize) /* [in] */ { HGLOBALStreamImpl* const This=(HGLOBALStreamImpl*)iface; + HGLOBAL supportHandle; TRACE("(%p, %ld)\n", iface, libNewSize.s.LowPart); @@ -641,10 +642,12 @@ /* * Re allocate the HGlobal to fit the new size of the stream. */ - This->supportHandle = GlobalReAlloc(This->supportHandle, - libNewSize.s.LowPart, - 0); + supportHandle = GlobalReAlloc(This->supportHandle, libNewSize.s.LowPart, 0); + if (supportHandle == 0) + return STG_E_MEDIUMFULL; + + This->supportHandle = supportHandle; This->streamSize.s.LowPart = libNewSize.s.LowPart; return S_OK; Index: ./dlls/ole32/memlockbytes.c =================================================================== RCS file: /var/cvs/wine/dlls/ole32/memlockbytes.c,v retrieving revision 1.15 diff -u -r1.15 memlockbytes.c --- ./dlls/ole32/memlockbytes.c 11 Sep 2003 03:06:25 -0000 1.15 +++ ./dlls/ole32/memlockbytes.c 25 Nov 2003 07:59:04 -0000 @@ -545,6 +545,7 @@ ULARGE_INTEGER libNewSize) /* [in] */ { HGLOBALLockBytesImpl* const This=(HGLOBALLockBytesImpl*)iface; + HGLOBAL supportHandle; /* * As documented. @@ -558,13 +559,12 @@ /* * Re allocate the HGlobal to fit the new size of the stream. */ - This->supportHandle = GlobalReAlloc(This->supportHandle, - libNewSize.s.LowPart, - 0); + supportHandle = GlobalReAlloc(This->supportHandle, libNewSize.s.LowPart, 0); - if (This->supportHandle == 0) + if (supportHandle == 0) return STG_E_MEDIUMFULL; + This->supportHandle = supportHandle; This->byteArraySize.s.LowPart = libNewSize.s.LowPart; return S_OK; Index: ./dlls/ole32/memlockbytes16.c =================================================================== RCS file: /var/cvs/wine/dlls/ole32/memlockbytes16.c,v retrieving revision 1.4 diff -u -r1.4 memlockbytes16.c --- ./dlls/ole32/memlockbytes16.c 9 Sep 2003 19:39:31 -0000 1.4 +++ ./dlls/ole32/memlockbytes16.c 25 Nov 2003 08:01:31 -0000 @@ -469,6 +469,7 @@ ULARGE_INTEGER libNewSize) /* [in] */ { HGLOBALLockBytesImpl16* const This=(HGLOBALLockBytesImpl16*)iface; + HGLOBAL16 supportHandle; TRACE("(%p,%ld)\n",This,libNewSize.s.LowPart); /* @@ -483,13 +484,12 @@ /* * Re allocate the HGlobal to fit the new size of the stream. */ - This->supportHandle = GlobalReAlloc16(This->supportHandle, - libNewSize.s.LowPart, - 0); + supportHandle = GlobalReAlloc16(This->supportHandle, libNewSize.s.LowPart, 0); - if (This->supportHandle == 0) + if (supportHandle == 0) return STG_E_MEDIUMFULL; + This->supportHandle = supportHandle; This->byteArraySize.s.LowPart = libNewSize.s.LowPart; return S_OK; -- Dimi.