Module: wine Branch: master Commit: e8d2b5430922282daa73f92a34baab1542e20659 URL: http://source.winehq.org/git/wine.git/?a=commit;h=e8d2b5430922282daa73f92a34...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Feb 7 17:28:17 2007 +0100
urlmon: Unlock protocol only if it was locked.
---
dlls/urlmon/binding.c | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/dlls/urlmon/binding.c b/dlls/urlmon/binding.c index bba7af4..79731c6 100644 --- a/dlls/urlmon/binding.c +++ b/dlls/urlmon/binding.c @@ -91,6 +91,7 @@ struct Binding { LPWSTR url; BOOL verified_mime; DWORD continue_call; + BOOL request_locked;
DWORD apartment_thread; HWND notif_hwnd; @@ -871,8 +872,10 @@ static HRESULT WINAPI InternetProtocolSi if(grfBSCF & BSCF_LASTDATANOTIFICATION) on_progress(This, ulProgress, ulProgressMax, BINDSTATUS_ENDDOWNLOADDATA, This->url);
- if(grfBSCF & BSCF_FIRSTDATANOTIFICATION) - IInternetProtocol_LockRequest(This->protocol, 0); + if(!This->request_locked) { + HRESULT hres = IInternetProtocol_LockRequest(This->protocol, 0); + This->request_locked = SUCCEEDED(hres); + }
on_data_available(This, grfBSCF);
@@ -1155,6 +1158,7 @@ static HRESULT Binding_Create(LPCWSTR ur ret->notif_hwnd = get_notif_hwnd(); ret->verified_mime = FALSE; ret->continue_call = 0; + ret->request_locked = FALSE; ret->task_queue_head = ret->task_queue_tail = NULL;
memset(&ret->bindinfo, 0, sizeof(BINDINFO)); @@ -1240,7 +1244,8 @@ HRESULT start_binding(LPCWSTR url, IBind }
if(binding->stream->init_buf) { - IInternetProtocol_UnlockRequest(binding->protocol); + if(binding->request_locked) + IInternetProtocol_UnlockRequest(binding->protocol);
IStream_AddRef(STREAM(binding->stream)); *ppv = binding->stream;