Robert Shearman rob@codeweavers.com writes:
+tryagain:
req->handle = token;
wine_server_set_reply( req, buffer, server_buf_len );
status = wine_server_call( req );
if (status == STATUS_BUFFER_TOO_SMALL)
{
if (buffer == stack_buffer)
buffer = RtlAllocateHeap(GetProcessHeap(), 0, reply->user_len);
else
buffer = RtlReAllocateHeap(GetProcessHeap(), 0, buffer, reply->user_len);
if (!buffer) return STATUS_NO_MEMORY;
server_buf_len = reply->user_len;
goto tryagain;
}
This is worse, now you are also skipping the initializations that SERVER_START_REQ does. When retrying you really need to end the first request properly and restart a new request from scratch.