diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-09-05 00:10:35 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-09-05 00:10:35 +0200 |
commit | d57b58849bda868f2463d38cc636f01af919316c (patch) | |
tree | 5beef62c041526d9468683e4388b6341f1530cc1 /dep/CascLib/src/common/Sockets.cpp | |
parent | ba224f70ad81fa0e5d1f0c4daf197e143317cdaa (diff) |
Dep/CascLib: Update to ladislav-zezula/CascLib@5c60050770767f2e606f6fec0c35beb8b9b00c60
Diffstat (limited to 'dep/CascLib/src/common/Sockets.cpp')
-rw-r--r-- | dep/CascLib/src/common/Sockets.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/dep/CascLib/src/common/Sockets.cpp b/dep/CascLib/src/common/Sockets.cpp index 8eb9680d448..954466351b2 100644 --- a/dep/CascLib/src/common/Sockets.cpp +++ b/dep/CascLib/src/common/Sockets.cpp @@ -47,6 +47,7 @@ static HANDLE inline SocketToHandle(SOCKET sock) // Guarantees that there is zero terminator after the response char * CASC_SOCKET::ReadResponse(const char * request, size_t request_length, CASC_MIME_RESPONSE & MimeResponse) { + char * new_server_response = NULL; char * server_response = NULL; size_t total_received = 0; size_t buffer_length = BUFFER_INITIAL_SIZE; @@ -83,12 +84,16 @@ char * CASC_SOCKET::ReadResponse(const char * request, size_t request_length, CA // Reallocate the buffer size, if needed if(total_received == buffer_length) { - // Reallocate the buffer - if((server_response = CASC_REALLOC(server_response, buffer_length + buffer_delta + 1)) == NULL) + // Reallocate the buffer. Note that if this fails, the old buffer remains valid + if((new_server_response = CASC_REALLOC(server_response, buffer_length + buffer_delta + 1)) == NULL) { dwErrCode = ERROR_NOT_ENOUGH_MEMORY; + CASC_FREE(server_response); break; } + + // Setup the new buffer + server_response = new_server_response; buffer_length += buffer_delta; buffer_delta = BUFFER_INITIAL_SIZE; } |