Module: wine Branch: master Commit: 4ac74d108310ce9b721504025d35567e3f83afda URL: http://source.winehq.org/git/wine.git/?a=commit;h=4ac74d108310ce9b721504025d...
Author: Andrew Eikum aeikum@codeweavers.com Date: Tue Jun 21 14:13:05 2016 -0500
urlmon: Allow NULL IBindStatusCallback in URLOpenBlockingStream.
Signed-off-by: Andrew Eikum aeikum@codeweavers.com Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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,