winhttp: Clean up properly in request_send.

This commit is contained in:
Hans Leidekker 2011-11-16 09:41:47 +01:00 committed by Alexandre Julliard
parent 97ba7aa521
commit 2621e98d04
1 changed files with 9 additions and 5 deletions

View File

@ -2925,14 +2925,18 @@ static HRESULT request_send( struct winhttp_request *request )
if (!(ret = WinHttpSendRequest( request->hrequest, NULL, 0, ptr, size, size, 0 )))
{
err = get_last_error();
goto error;
}
if (!sa) heap_free( ptr );
else if ((hr = SafeArrayUnaccessData( sa )) != S_OK) return hr;
if (!ret) return HRESULT_FROM_WIN32( err );
if ((err = wait_for_completion( request ))) return HRESULT_FROM_WIN32( err );
if ((err = wait_for_completion( request ))) goto error;
if (sa) SafeArrayUnaccessData( sa );
else heap_free( ptr );
request->state = REQUEST_STATE_SENT;
return S_OK;
error:
if (sa) SafeArrayUnaccessData( sa );
else heap_free( ptr );
return HRESULT_FROM_WIN32( err );
}
static HRESULT request_send_and_receive( struct winhttp_request *request )