diff --git a/src/SocketBuffer.c b/src/SocketBuffer.c index 42eff81fe5b7b8757bed17c014dc7d7333026551..39233ce063734a3f683b98395f7cb37c00c6deb6 100644 --- a/src/SocketBuffer.c +++ b/src/SocketBuffer.c @@ -193,12 +193,18 @@ char* SocketBuffer_getQueuedData(SOCKET socket, size_t bytes, size_t* actual_len if (queue->datalen > 0) { void* newmem = malloc(bytes); - - free(queue->buf); - queue->buf = newmem; - if (!newmem) + if (newmem) + { + memcpy(newmem, queue->buf, queue->datalen); + free(queue->buf); + queue->buf = newmem; + } + else + { + free(queue->buf); + queue->buf = NULL; goto exit; - memcpy(newmem, queue->buf, queue->datalen); + } } else queue->buf = realloc(queue->buf, bytes);