Module: wine Branch: master Commit: 51e1a08893384183b8fda9d44a5b3d0e473a4d2a URL: http://source.winehq.org/git/wine.git/?a=commit;h=51e1a08893384183b8fda9d44a...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Feb 3 18:58:43 2017 +0100
inetcomm: Return S_FALSE if no data is returned in IInternetProtocol::Read.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/inetcomm/protocol.c | 10 +++++++++- dlls/inetcomm/tests/mimeole.c | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/dlls/inetcomm/protocol.c b/dlls/inetcomm/protocol.c index 0b28930..c77cf26 100644 --- a/dlls/inetcomm/protocol.c +++ b/dlls/inetcomm/protocol.c @@ -564,10 +564,18 @@ static HRESULT WINAPI MimeHtmlProtocol_Resume(IInternetProtocol *iface) static HRESULT WINAPI MimeHtmlProtocol_Read(IInternetProtocol *iface, void* pv, ULONG cb, ULONG* pcbRead) { MimeHtmlProtocol *This = impl_from_IInternetProtocol(iface); + ULONG read = 0; + HRESULT hres;
TRACE("(%p)->(%p %u %p)\n", This, pv, cb, pcbRead);
- return IStream_Read(This->stream, pv, cb, pcbRead); + hres = IStream_Read(This->stream, pv, cb, &read); + if(pcbRead) + *pcbRead = read; + if(hres != S_OK) + return hres; + + return read ? S_OK : S_FALSE; }
static HRESULT WINAPI MimeHtmlProtocol_Seek(IInternetProtocol *iface, LARGE_INTEGER dlibMove, diff --git a/dlls/inetcomm/tests/mimeole.c b/dlls/inetcomm/tests/mimeole.c index fbee6e1..5701af6 100644 --- a/dlls/inetcomm/tests/mimeole.c +++ b/dlls/inetcomm/tests/mimeole.c @@ -1368,6 +1368,8 @@ static HRESULT WINAPI ProtocolSink_ReportData(IInternetProtocolSink *iface, DWOR buf[read] = 0; ok(!strcmp(buf, current_binding_test->data), "unexpected data: %s\n", buf);
+ hres = IInternetProtocol_Read(current_binding_protocol, buf, sizeof(buf), &read); + ok(hres == S_FALSE, "Read failed: %08x\n", hres); return S_OK; }