Jacek Caban : inetcomm: Return S_FALSE if no data is returned in IInternetProtocol::Read.
Alexandre Julliard
julliard at winehq.org
Mon Feb 6 16:31:19 CST 2017
Module: wine
Branch: master
Commit: 51e1a08893384183b8fda9d44a5b3d0e473a4d2a
URL: http://source.winehq.org/git/wine.git/?a=commit;h=51e1a08893384183b8fda9d44a5b3d0e473a4d2a
Author: Jacek Caban <jacek at 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 at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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;
}
More information about the wine-cvs
mailing list