Rob Shearman : rpcrt4: Fix a leak of msg in RPCRT4_io_thread on the error paths.

Alexandre Julliard julliard at winehq.org
Wed Jan 9 07:01:49 CST 2008


Module: wine
Branch: master
Commit: 5be085dec5ef3ef427758cce3a7c2eac01a9cd1a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=5be085dec5ef3ef427758cce3a7c2eac01a9cd1a

Author: Rob Shearman <rob at codeweavers.com>
Date:   Tue Jan  8 18:14:27 2008 +0000

rpcrt4: Fix a leak of msg in RPCRT4_io_thread on the error paths.

---

 dlls/rpcrt4/rpc_server.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/dlls/rpcrt4/rpc_server.c b/dlls/rpcrt4/rpc_server.c
index 9266187..bb50018 100644
--- a/dlls/rpcrt4/rpc_server.c
+++ b/dlls/rpcrt4/rpc_server.c
@@ -370,15 +370,18 @@ static DWORD CALLBACK RPCRT4_io_thread(LPVOID the_arg)
     }
 
     packet = HeapAlloc(GetProcessHeap(), 0, sizeof(RpcPacket));
-    if (!packet)
-        break;
+    if (!packet) {
+      HeapFree(GetProcessHeap(), 0, msg);
+      break;
+    }
     packet->conn = conn;
     packet->hdr = hdr;
     packet->msg = msg;
     if (!QueueUserWorkItem(RPCRT4_worker_thread, packet, WT_EXECUTELONGFUNCTION)) {
-        ERR("couldn't queue work item for worker thread, error was %d\n", GetLastError());
-        HeapFree(GetProcessHeap(), 0, packet);
-        break;
+      ERR("couldn't queue work item for worker thread, error was %d\n", GetLastError());
+      HeapFree(GetProcessHeap(), 0, msg);
+      HeapFree(GetProcessHeap(), 0, packet);
+      break;
     }
 
     msg = NULL;




More information about the wine-cvs mailing list