[1/5] winhttp: Fix a memory leak in insert_header (Valgrind).
Hans Leidekker
hans at codeweavers.com
Fri Mar 24 09:49:19 CDT 2017
Signed-off-by: Hans Leidekker <hans at codeweavers.com>
---
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
More information about the wine-patches
mailing list