Jacek Caban : urlmon: Use protocol handler' s IUnknown to query other interfaces in BindProtocol.

Alexandre Julliard julliard at winehq.org
Wed May 9 16:35:12 CDT 2018


Module: wine
Branch: master
Commit: 5082e4df25dfd8bb558330557b324345d9637e5c
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=5082e4df25dfd8bb558330557b324345d9637e5c

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed May  9 14:58:27 2018 +0200

urlmon: Use protocol handler's IUnknown to query other interfaces in BindProtocol.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/urlmon/bindprot.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/dlls/urlmon/bindprot.c b/dlls/urlmon/bindprot.c
index 3d332c2..38187e9 100644
--- a/dlls/urlmon/bindprot.c
+++ b/dlls/urlmon/bindprot.c
@@ -286,11 +286,11 @@ static HRESULT WINAPI BindProtocol_QueryInterface(IInternetProtocolEx *iface, RE
     }else if(IsEqualGUID(&IID_IWinInetInfo, riid)) {
         TRACE("(%p)->(IID_IWinInetInfo %p)\n", This, ppv);
 
-        if(This->protocol) {
+        if(This->protocol_unk) {
             IWinInetInfo *inet_info;
             HRESULT hres;
 
-            hres = IInternetProtocol_QueryInterface(This->protocol, &IID_IWinInetInfo, (void**)&inet_info);
+            hres = IUnknown_QueryInterface(This->protocol_unk, &IID_IWinInetInfo, (void**)&inet_info);
             if(SUCCEEDED(hres)) {
                 *ppv = &This->IWinInetHttpInfo_iface;
                 IWinInetInfo_Release(inet_info);
@@ -299,11 +299,11 @@ static HRESULT WINAPI BindProtocol_QueryInterface(IInternetProtocolEx *iface, RE
     }else if(IsEqualGUID(&IID_IWinInetHttpInfo, riid)) {
         TRACE("(%p)->(IID_IWinInetHttpInfo %p)\n", This, ppv);
 
-        if(This->protocol) {
+        if(This->protocol_unk) {
             IWinInetHttpInfo *http_info;
             HRESULT hres;
 
-            hres = IInternetProtocol_QueryInterface(This->protocol, &IID_IWinInetHttpInfo, (void**)&http_info);
+            hres = IUnknown_QueryInterface(This->protocol_unk, &IID_IWinInetHttpInfo, (void**)&http_info);
             if(SUCCEEDED(hres)) {
                 *ppv = &This->IWinInetHttpInfo_iface;
                 IWinInetHttpInfo_Release(http_info);
@@ -557,15 +557,18 @@ static HRESULT WINAPI BindProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUr
     This->protocol_unk = protocol_unk;
     This->protocol = protocol;
 
+    if(!protocol_unk)
+        protocol_unk = (IUnknown*)protocol;
+
     set_binding_sink(This, pOIProtSink, pOIBindInfo);
 
-    hres = IInternetProtocol_QueryInterface(protocol, &IID_IInternetPriority, (void**)&priority);
+    hres = IUnknown_QueryInterface(protocol_unk, &IID_IInternetPriority, (void**)&priority);
     if(SUCCEEDED(hres)) {
         IInternetPriority_SetPriority(priority, This->priority);
         IInternetPriority_Release(priority);
     }
 
-    hres = IInternetProtocol_QueryInterface(protocol, &IID_IInternetProtocolEx, (void**)&protocolex);
+    hres = IUnknown_QueryInterface(protocol_unk, &IID_IInternetProtocolEx, (void**)&protocolex);
     if(SUCCEEDED(hres)) {
         hres = IInternetProtocolEx_StartEx(protocolex, pUri, &This->IInternetProtocolSink_iface,
                 &This->IInternetBindInfo_iface, 0, NULL);




More information about the wine-cvs mailing list