[WINHTTP] Sync with Wine Staging 3.9. CORE-14656
[reactos.git] / dll / win32 / winhttp / handle.c
index 7010727..6026a49 100644 (file)
@@ -89,9 +89,10 @@ void release_object( object_header_t *hdr )
 HINTERNET alloc_handle( object_header_t *hdr )
 {
     object_header_t **p;
-    ULONG_PTR handle = 0, num;
+    ULONG_PTR handle, num;
 
     list_init( &hdr->children );
+    hdr->handle = NULL;
 
     EnterCriticalSection( &handle_cs );
     if (!max_handles)
@@ -103,7 +104,7 @@ HINTERNET alloc_handle( object_header_t *hdr )
     }
     if (max_handles == next_handle)
     {
-        num = max_handles + HANDLE_CHUNK_SIZE;
+        num = max_handles * 2;
         if (!(p = heap_realloc_zero( handles, sizeof(ULONG_PTR) * num ))) goto end;
         handles = p;
         max_handles = num;
@@ -112,11 +113,12 @@ HINTERNET alloc_handle( object_header_t *hdr )
     if (handles[handle]) ERR("handle isn't free but should be\n");
 
     handles[handle] = addref_object( hdr );
-    while (handles[next_handle] && (next_handle < max_handles)) next_handle++;
+    hdr->handle = (HINTERNET)(handle + 1);
+    while ((next_handle < max_handles) && handles[next_handle]) next_handle++;
 
 end:
     LeaveCriticalSection( &handle_cs );
-    return hdr->handle = (HINTERNET)(handle + 1);
+    return hdr->handle;
 }
 
 BOOL free_handle( HINTERNET hinternet )