[PATCH 1/2] urlmon: Allow NULL IBindStatusCallback in URLOpenBlockingStream

Andrew Eikum aeikum at codeweavers.com
Tue Jun 21 14:13:05 CDT 2016


Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
---
 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,
-- 
2.9.0





More information about the wine-patches mailing list