Andrew Eikum : urlmon: Allow NULL IBindStatusCallback in URLOpenBlockingStream.

Alexandre Julliard julliard at winehq.org
Wed Jun 22 11:04:41 CDT 2016


Module: wine
Branch: master
Commit: 4ac74d108310ce9b721504025d35567e3f83afda
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4ac74d108310ce9b721504025d35567e3f83afda

Author: Andrew Eikum <aeikum at codeweavers.com>
Date:   Tue Jun 21 14:13:05 2016 -0500

urlmon: Allow NULL IBindStatusCallback in URLOpenBlockingStream.

Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/urlmon/tests/stream.c | 15 +++++++++++++++
 dlls/urlmon/umstream.c     |  8 +++++++-
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/dlls/urlmon/tests/stream.c b/dlls/urlmon/tests/stream.c
index 9882a4d..354d809 100644
--- a/dlls/urlmon/tests/stream.c
+++ b/dlls/urlmon/tests/stream.c
@@ -328,6 +328,21 @@ static void test_URLOpenBlockingStreamW(void)
     ok(pStream != NULL, "pStream is NULL\n");
     if(pStream)
     {
+        buffer[0] = 0;
+        hr = IStream_Read(pStream, buffer, sizeof(buffer), NULL);
+        ok(hr == S_OK, "IStream_Read failed with error 0x%08x\n", hr);
+        ok(!memcmp(buffer, szHtmlDoc, sizeof(szHtmlDoc)-1), "read data differs from file\n");
+
+        IStream_Release(pStream);
+    }
+
+    hr = URLOpenBlockingStreamW(NULL, INDEX_HTML, &pStream, 0, NULL);
+    ok(hr == S_OK, "URLOpenBlockingStreamW failed with error 0x%08x\n", hr);
+
+    ok(pStream != NULL, "pStream is NULL\n");
+    if(pStream)
+    {
+        buffer[0] = 0;
         hr = IStream_Read(pStream, buffer, sizeof(buffer), NULL);
         ok(hr == S_OK, "IStream_Read failed with error 0x%08x\n", hr);
         ok(!memcmp(buffer, szHtmlDoc, sizeof(szHtmlDoc)-1), "read data differs from file\n");
diff --git a/dlls/urlmon/umstream.c b/dlls/urlmon/umstream.c
index 3a3e09a..9c94658 100644
--- a/dlls/urlmon/umstream.c
+++ b/dlls/urlmon/umstream.c
@@ -122,12 +122,18 @@ static HRESULT WINAPI ProxyBindStatusCallback_OnStopBinding(IBindStatusCallback
 
 static HRESULT WINAPI ProxyBindStatusCallback_GetBindInfo(IBindStatusCallback *iface, DWORD *grfBINDF, BINDINFO *pbindinfo)
 {
+    DWORD size = pbindinfo->cbSize;
     ProxyBindStatusCallback *This = impl_from_IBindStatusCallback(iface);
 
     if(This->pBSC)
         return IBindStatusCallback_GetBindInfo(This->pBSC, grfBINDF, pbindinfo);
 
-    return E_INVALIDARG;
+    memset(pbindinfo, 0, size);
+    pbindinfo->cbSize = size;
+
+    *grfBINDF = 0;
+
+    return S_OK;
 }
 
 static HRESULT WINAPI ProxyBindStatusCallback_OnDataAvailable(IBindStatusCallback *iface, DWORD grfBSCF,




More information about the wine-cvs mailing list