diff --git a/src/Mayaqua/Memory.c b/src/Mayaqua/Memory.c index 3bdc8ada..2658e83c 100644 --- a/src/Mayaqua/Memory.c +++ b/src/Mayaqua/Memory.c @@ -3777,6 +3777,13 @@ void Free(void *addr) InternalFree(tag); } +// Free and set pointer's value to NULL +void FreeSafe(void **addr) +{ + Free(*addr); + *addr = NULL; +} + // Check the memtag void CheckMemTag(MEMTAG *tag) { diff --git a/src/Mayaqua/Memory.h b/src/Mayaqua/Memory.h index ba2f1912..894a0e51 100644 --- a/src/Mayaqua/Memory.h +++ b/src/Mayaqua/Memory.h @@ -276,6 +276,7 @@ void *ZeroMalloc(UINT size); void *ZeroMallocEx(UINT size, bool zero_clear_when_free); void *ReAlloc(void *addr, UINT size); void Free(void *addr); +void FreeSafe(void **addr); void CheckMemTag(MEMTAG *tag); UINT GetMemSize(void *addr); diff --git a/src/Mayaqua/Network.c b/src/Mayaqua/Network.c index a469d752..4be28ec3 100644 --- a/src/Mayaqua/Network.c +++ b/src/Mayaqua/Network.c @@ -20564,7 +20564,7 @@ HTTP_HEADER *RecvHttpHeader(SOCK *s) // Split into tokens token = ParseToken(str, " "); - Free(str); + FreeSafe((void **)&str); if (token->NumTokens < 3) { @@ -20590,18 +20590,18 @@ HTTP_HEADER *RecvHttpHeader(SOCK *s) if (IsEmptyStr(str)) { // End of header - Free(str); + FreeSafe((void **)&str); break; } if (AddHttpValueStr(header, str) == false) { - Free(str); + FreeSafe((void **)&str); FreeHttpHeader(header); break; } - Free(str); + FreeSafe((void **)&str); } return header;