Robert Shearman <rob(a)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.
--
Alexandre Julliard
julliard(a)winehq.org