Aric Stewart aric@codeweavers.com writes:
- else if (id_last == array_size)
 - {
 CookieInternal **new_cookies = NULL;new_cookies = HeapReAlloc(GetProcessHeap(),0,cookies,sizeof(CookieInternal*) * (array_size * 2));if (!new_cookies){array_size = 0;ERR("Out of memory, Unable to realloc cookies array\n");return 0x0;}cookies = new_cookies;array_size *= 2;- }
 - /* try to reuse IDs if possible */
 - for (i = 0; i < id_last; i++)
 if (cookies[i] == NULL) break;
It would be smarter to reuse the ID before growing the array. Also you could mark free entries with a 0 id or something like that, and avoid a level of indirection (and some memory leaks...)