Jacek Caban : urlmon: Use proper IUri in BindToStorage implementation.

Alexandre Julliard julliard at winehq.org
Fri Jun 24 13:54:00 CDT 2011


Module: wine
Branch: master
Commit: cca52128bd679dba71b65d6878bd8fbd447c3ec5
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=cca52128bd679dba71b65d6878bd8fbd447c3ec5

Author: Jacek Caban <jacek at 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,




More information about the wine-cvs mailing list