From 4bd7acbe8cbfbf179f5a05ac335b4083af28e9e0 Mon Sep 17 00:00:00 2001 From: Gregor Schneider Date: Sat, 2 Jan 2010 20:26:36 +0000 Subject: [PATCH] [MSAFD] Only free if memory was allocated, fixes build svn path=/trunk/; revision=44898 --- reactos/dll/win32/msafd/misc/sndrcv.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/reactos/dll/win32/msafd/misc/sndrcv.c b/reactos/dll/win32/msafd/misc/sndrcv.c index 8ee45d6d609..212b4fc25ca 100644 --- a/reactos/dll/win32/msafd/misc/sndrcv.c +++ b/reactos/dll/win32/msafd/misc/sndrcv.c @@ -516,7 +516,7 @@ WSPSendTo(SOCKET Handle, PVOID APCFunction; HANDLE Event = NULL; PTRANSPORT_ADDRESS RemoteAddress; - PSOCKADDR BindAddress; + PSOCKADDR BindAddress = NULL; INT BindAddressLength; HANDLE SockEvent; PSOCKET_INFORMATION Socket; @@ -546,7 +546,10 @@ WSPSendTo(SOCKET Handle, RemoteAddress = HeapAlloc(GlobalHeap, 0, 0x6 + SocketAddressLength); if (!RemoteAddress) { - HeapFree(GlobalHeap, 0, BindAddress); + if (BindAddress != NULL) + { + HeapFree(GlobalHeap, 0, BindAddress); + } return MsafdReturnWithErrno(STATUS_INSUFFICIENT_RESOURCES, lpErrno, 0, NULL); } @@ -557,7 +560,10 @@ WSPSendTo(SOCKET Handle, if (!NT_SUCCESS(Status)) { HeapFree(GlobalHeap, 0, RemoteAddress); - HeapFree(GlobalHeap, 0, BindAddress); + if (BindAddress != NULL) + { + HeapFree(GlobalHeap, 0, BindAddress); + } return SOCKET_ERROR; } @@ -626,7 +632,10 @@ WSPSendTo(SOCKET Handle, NtClose(SockEvent); HeapFree(GlobalHeap, 0, RemoteAddress); - HeapFree(GlobalHeap, 0, BindAddress); + if (BindAddress != NULL) + { + HeapFree(GlobalHeap, 0, BindAddress); + } if (Status == STATUS_PENDING) return WSA_IO_PENDING;