[PATCH 2/2] urlmon: Allow NULL IBindStatusCallback in UrlOpenStream

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


Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
---
 dlls/urlmon/tests/stream.c |  3 +++
 dlls/urlmon/umstream.c     | 14 +++++++++++++-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/dlls/urlmon/tests/stream.c b/dlls/urlmon/tests/stream.c
index 354d809..6717198 100644
--- a/dlls/urlmon/tests/stream.c
+++ b/dlls/urlmon/tests/stream.c
@@ -380,6 +380,9 @@ static void test_URLOpenStreamW(void)
     CHECK_CALLED(OnProgress_ENDDOWNLOADDATA);
     CHECK_CALLED(OnDataAvailable);
     CHECK_CALLED(OnStopBinding);
+
+    hr = URLOpenStreamW(NULL, INDEX_HTML, 0, NULL);
+    ok(hr == S_OK, "URLOpenStreamW failed with error 0x%08x\n", hr);
 }
 
 START_TEST(stream)
diff --git a/dlls/urlmon/umstream.c b/dlls/urlmon/umstream.c
index 9c94658..01cc755 100644
--- a/dlls/urlmon/umstream.c
+++ b/dlls/urlmon/umstream.c
@@ -182,8 +182,20 @@ static const IBindStatusCallbackVtbl BlockingBindStatusCallbackVtbl =
 static HRESULT WINAPI AsyncBindStatusCallback_GetBindInfo(IBindStatusCallback *iface, DWORD *grfBINDF, BINDINFO *pbindinfo)
 {
     ProxyBindStatusCallback *This = impl_from_IBindStatusCallback(iface);
-    HRESULT hr = IBindStatusCallback_GetBindInfo(This->pBSC, grfBINDF, pbindinfo);
+    HRESULT hr = S_OK;
+
+    if(This->pBSC)
+        hr = IBindStatusCallback_GetBindInfo(This->pBSC, grfBINDF, pbindinfo);
+    else{
+        DWORD size = pbindinfo->cbSize;
+        memset(pbindinfo, 0, size);
+        pbindinfo->cbSize = size;
+
+        *grfBINDF = 0;
+    }
+
     *grfBINDF |= BINDF_PULLDATA | BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE;
+
     return hr;
 }
 
-- 
2.9.0




More information about the wine-patches mailing list