Module: wine Branch: master Commit: cca52128bd679dba71b65d6878bd8fbd447c3ec5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=cca52128bd679dba71b65d6878...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Jun 23 13:44:38 2011 +0200
urlmon: Use proper IUri in BindToStorage implementation.
---
dlls/urlmon/tests/url.c | 12 ++++++++++++ dlls/urlmon/umon.c | 12 +++--------- 2 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/dlls/urlmon/tests/url.c b/dlls/urlmon/tests/url.c index 8766b1d..4924154 100644 --- a/dlls/urlmon/tests/url.c +++ b/dlls/urlmon/tests/url.c @@ -3582,6 +3582,8 @@ static void test_StdURLMoniker(void) { IMoniker *mon, *async_mon; LPOLESTR display_name; + IBindCtx *bctx; + IUnknown *unk; HRESULT hres;
hres = CoCreateInstance(&IID_IInternet, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER, @@ -3614,6 +3616,16 @@ static void test_StdURLMoniker(void) IUriContainer_Release(uri_container); }
+ SET_EXPECT(QueryInterface_IServiceProvider); + hres = CreateAsyncBindCtx(0, (IBindStatusCallback*)&bsc, NULL, &bctx); + ok(hres == S_OK, "CreateAsyncBindCtx failed: %08x\n\n", hres); + CHECK_CALLED(QueryInterface_IServiceProvider); + + unk = (void*)0xdeadbeef; + hres = IMoniker_BindToStorage(mon, bctx, NULL, &IID_IStream, (void**)&unk); + ok(hres == MK_E_SYNTAX, "BindToStorage failed: %08x, expected MK_E_SYNTAX\n", hres); + ok(!unk, "unk = %p\n", unk); + IMoniker_Release(mon); }
diff --git a/dlls/urlmon/umon.c b/dlls/urlmon/umon.c index cff4190..0e6c764 100644 --- a/dlls/urlmon/umon.c +++ b/dlls/urlmon/umon.c @@ -252,8 +252,6 @@ static HRESULT WINAPI URLMoniker_BindToStorage(IMoniker* iface, IBindCtx* pbc, IMoniker* pmkToLeft, REFIID riid, void **ppvObject) { URLMoniker *This = impl_from_IMoniker(iface); - IUri *uri; - HRESULT hres;
TRACE("(%p)->(%p %p %s %p)\n", This, pbc, pmkToLeft, debugstr_guid(riid), ppvObject);
@@ -264,14 +262,10 @@ static HRESULT WINAPI URLMoniker_BindToStorage(IMoniker* iface, IBindCtx* pbc, if(pmkToLeft) FIXME("Unsupported pmkToLeft\n");
- hres = CreateUri(This->URLName, Uri_CREATE_FILE_USE_DOS_PATH, 0, &uri); - if(FAILED(hres)) - return hres; - - hres = bind_to_storage(uri, pbc, riid, ppvObject); + if(!This->uri) + return MK_E_SYNTAX;
- IUri_Release(uri); - return hres; + return bind_to_storage(This->uri, pbc, riid, ppvObject); }
static HRESULT WINAPI URLMoniker_Reduce(IMoniker *iface, IBindCtx *pbc,