Module: wine Branch: master Commit: f2b1a1106b04948c4e8a3409585138c3af4a49ee URL: http://source.winehq.org/git/wine.git/?a=commit;h=f2b1a1106b04948c4e8a340958...
Author: Rob Shearman rob@codeweavers.com Date: Mon Jan 7 17:15:17 2008 +0000
ole32: Fix memory leaks caused by not calling the channel hook function when extension_size is zero.
Instead free the allocated memory outside of the channel hook function.
---
dlls/ole32/rpc.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/dlls/ole32/rpc.c b/dlls/ole32/rpc.c index ad6a39f..31b9eb1 100644 --- a/dlls/ole32/rpc.c +++ b/dlls/ole32/rpc.c @@ -248,8 +248,6 @@ static unsigned char * ChannelHooks_ClientFillBuffer(SChannelHookCallInfo *info,
LeaveCriticalSection(&csChannelHook);
- HeapFree(GetProcessHeap(), 0, data); - return buffer; }
@@ -370,8 +368,6 @@ static unsigned char * ChannelHooks_ServerFillBuffer(SChannelHookCallInfo *info,
LeaveCriticalSection(&csChannelHook);
- HeapFree(GetProcessHeap(), 0, data); - return buffer; }
@@ -563,6 +559,8 @@ static HRESULT WINAPI ServerRpcChannelBuffer_GetBuffer(LPRPCCHANNELBUFFER iface, } }
+ HeapFree(GetProcessHeap(), 0, channel_hook_data); + /* store the prefixed data length so that we can restore the real buffer * later */ message_state->prefix_data_len = (char *)msg->Buffer - (char *)orpcthat; @@ -751,6 +749,8 @@ static HRESULT WINAPI ClientRpcChannelBuffer_GetBuffer(LPRPCCHANNELBUFFER iface, msg->BufferLength -= message_state->prefix_data_len; }
+ HeapFree(GetProcessHeap(), 0, channel_hook_data); + TRACE("-- %ld\n", status);
return HRESULT_FROM_WIN32(status);