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