From a4a8693e8922af2d8f4bdadc3e3cf4812263d645 Mon Sep 17 00:00:00 2001 From: Andrew Eikum Date: Tue, 21 Jun 2016 14:13:09 -0500 Subject: [PATCH] urlmon: Allow NULL IBindStatusCallback in UrlOpenStream. Signed-off-by: Andrew Eikum Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- 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 354d8096cac..6717198b311 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 9c946582658..01cc755c231 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.11.4.GIT