Module: wine Branch: master Commit: c37493647281d35559a8cf0f7fcacc8fdaa55126 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c37493647281d35559a8cf0f7f...
Author: Jacek Caban jacek@codeweavers.com Date: Sat Feb 10 16:32:44 2007 +0100
urlmon: Depend on Read result in report_data.
---
dlls/urlmon/binding.c | 22 +++++++++++----------- 1 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/dlls/urlmon/binding.c b/dlls/urlmon/binding.c index cd084b8..bd4a447 100644 --- a/dlls/urlmon/binding.c +++ b/dlls/urlmon/binding.c @@ -55,6 +55,7 @@ typedef struct { BYTE buf[1024*8]; DWORD buf_size; BOOL init_buf; + HRESULT hres; } ProtocolStream;
typedef enum { @@ -139,14 +140,13 @@ static task_header_t *pop_task(Binding * static void fill_stream_buffer(ProtocolStream *This) { DWORD read = 0; - HRESULT hres;
if(sizeof(This->buf) == This->buf_size) return;
- hres = IInternetProtocol_Read(This->protocol, This->buf+This->buf_size, - sizeof(This->buf)-This->buf_size, &read); - if(SUCCEEDED(hres)) { + This->hres = IInternetProtocol_Read(This->protocol, This->buf+This->buf_size, + sizeof(This->buf)-This->buf_size, &read); + if(SUCCEEDED(This->hres)) { This->buf_size += read; This->init_buf = TRUE; } @@ -389,7 +389,6 @@ static HRESULT WINAPI ProtocolStream_Rea { ProtocolStream *This = STREAM_THIS(iface); DWORD read = 0, pread = 0; - HRESULT hres;
TRACE("(%p)->(%p %d %p)\n", This, pv, cb, pcbRead);
@@ -411,13 +410,13 @@ static HRESULT WINAPI ProtocolStream_Rea return S_OK; }
- hres = IInternetProtocol_Read(This->protocol, (PBYTE)pv+read, cb-read, &pread); + This->hres = IInternetProtocol_Read(This->protocol, (PBYTE)pv+read, cb-read, &pread); *pcbRead = read + pread;
- if(hres == E_PENDING) + if(This->hres == E_PENDING) return E_PENDING; - else if(FAILED(hres)) - FIXME("Read failed: %08x\n", hres); + else if(FAILED(This->hres)) + FIXME("Read failed: %08x\n", This->hres);
return read || pread ? S_OK : S_FALSE; } @@ -533,6 +532,7 @@ static ProtocolStream *create_stream(IIn ret->ref = 1; ret->buf_size = 0; ret->init_buf = FALSE; + ret->hres = S_OK;
IInternetProtocol_AddRef(protocol); ret->protocol = protocol; @@ -859,7 +859,7 @@ static void report_data(Binding *This, D BINDSTATUS_BEGINDOWNLOADDATA, This->url); }
- if(bscf & BSCF_LASTDATANOTIFICATION) { + if(This->stream->hres == S_FALSE || (bscf & BSCF_LASTDATANOTIFICATION)) { IBindStatusCallback_OnProgress(This->callback, progress, progress_max, BINDSTATUS_ENDDOWNLOADDATA, This->url); } @@ -874,7 +874,7 @@ static void report_data(Binding *This, D IBindStatusCallback_OnDataAvailable(This->callback, bscf, This->stream->buf_size, &formatetc, &This->stgmed);
- if(bscf & BSCF_LASTDATANOTIFICATION) { + if(This->stream->hres == S_FALSE) { This->download_state = END_DOWNLOAD; IBindStatusCallback_OnStopBinding(This->callback, S_OK, NULL); }