urlmon: Use CopyBindInfo in InternetBindInfo_GetBindInfo.
diff --git a/dlls/urlmon/binding.c b/dlls/urlmon/binding.c
index 5504f6f..c969eae 100644
--- a/dlls/urlmon/binding.c
+++ b/dlls/urlmon/binding.c
@@ -1150,19 +1150,7 @@
TRACE("(%p)->(%p %p)\n", This, grfBINDF, pbindinfo);
*grfBINDF = This->bindf;
-
- *pbindinfo = This->bindinfo;
-
- if(pbindinfo->szExtraInfo || pbindinfo->szCustomVerb)
- FIXME("copy strings\n");
-
- if(pbindinfo->stgmedData.pUnkForRelease)
- IUnknown_AddRef(pbindinfo->stgmedData.pUnkForRelease);
-
- if(pbindinfo->pUnk)
- IUnknown_AddRef(pbindinfo->pUnk);
-
- return S_OK;
+ return CopyBindInfo(&This->bindinfo, pbindinfo);
}
static HRESULT WINAPI InternetBindInfo_GetBindString(IInternetBindInfo *iface,
diff --git a/dlls/urlmon/tests/url.c b/dlls/urlmon/tests/url.c
index b9291ac..f9e7cb5 100644
--- a/dlls/urlmon/tests/url.c
+++ b/dlls/urlmon/tests/url.c
@@ -641,6 +641,11 @@
}
memset(&bindinfo, 0, sizeof(bindinfo));
+ bindinfo.cbSize = 0;
+ hres = IInternetBindInfo_GetBindInfo(pOIBindInfo, &bind_info, &bindinfo);
+ ok(hres == E_INVALIDARG, "GetBindInfo returned: %08x, expected E_INVALIDARG\n", hres);
+
+ memset(&bindinfo, 0, sizeof(bindinfo));
bindinfo.cbSize = sizeof(bindinfo);
hres = IInternetBindInfo_GetBindInfo(pOIBindInfo, &bind_info, &bindinfo);
ok(hres == S_OK, "GetBindInfo failed: %08x\n", hres);
diff --git a/dlls/urlmon/urlmon_main.h b/dlls/urlmon/urlmon_main.h
index 28723e1..391b1b3 100644
--- a/dlls/urlmon/urlmon_main.h
+++ b/dlls/urlmon/urlmon_main.h
@@ -79,6 +79,8 @@
HRESULT create_default_callback(IBindStatusCallback**) DECLSPEC_HIDDEN;
HRESULT wrap_callback(IBindStatusCallback*,IBindStatusCallback**) DECLSPEC_HIDDEN;
+HRESULT WINAPI CopyBindInfo(const BINDINFO *pcbiSrc, BINDINFO *pcbiDest) DECLSPEC_HIDDEN;
+
typedef struct ProtocolVtbl ProtocolVtbl;
typedef struct {