From: Hans Leidekker Subject: [1/5] winhttp: Fix a memory leak in insert_header (Valgrind). Message-Id: <1490366963-29887-1-git-send-email-hans@codeweavers.com> Date: Fri, 24 Mar 2017 15:49:19 +0100 Signed-off-by: Hans Leidekker --- dlls/winhttp/request.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/dlls/winhttp/request.c b/dlls/winhttp/request.c index b2b72c7..3cdb6ab 100644 --- a/dlls/winhttp/request.c +++ b/dlls/winhttp/request.c @@ -368,25 +368,21 @@ static int get_header_index( request_t *request, LPCWSTR field, int requested_in static BOOL insert_header( request_t *request, header_t *header ) { - DWORD count; + DWORD count = request->num_headers + 1; header_t *hdrs; - count = request->num_headers + 1; - if (count > 1) + if (request->headers) hdrs = heap_realloc_zero( request->headers, sizeof(header_t) * count ); else - hdrs = heap_alloc_zero( sizeof(header_t) * count ); - - if (hdrs) - { - request->headers = hdrs; - request->headers[count - 1].field = strdupW( header->field ); - request->headers[count - 1].value = strdupW( header->value ); - request->headers[count - 1].is_request = header->is_request; - request->num_headers++; - return TRUE; - } - return FALSE; + hdrs = heap_alloc_zero( sizeof(header_t) ); + if (!hdrs) return FALSE; + + request->headers = hdrs; + request->headers[count - 1].field = strdupW( header->field ); + request->headers[count - 1].value = strdupW( header->value ); + request->headers[count - 1].is_request = header->is_request; + request->num_headers = count; + return TRUE; } static BOOL delete_header( request_t *request, DWORD index ) -- 2.1.4