Rob Shearman : ole32: get_moniker_for_progid_display_name should fallback to using IClassFactory to get IParseDisplayName if getting it directly fails .
Alexandre Julliard
julliard at winehq.org
Mon Jan 7 08:39:22 CST 2008
Module: wine
Branch: master
Commit: 9645f9d19d2ff9a57546569f1a573a5b73801437
URL: http://source.winehq.org/git/wine.git/?a=commit;h=9645f9d19d2ff9a57546569f1a573a5b73801437
Author: Rob Shearman <rob at codeweavers.com>
Date: Sun Jan 6 16:20:26 2008 +0000
ole32: get_moniker_for_progid_display_name should fallback to using IClassFactory to get IParseDisplayName if getting it directly fails.
---
dlls/ole32/moniker.c | 15 +++++++++++++++
1 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/dlls/ole32/moniker.c b/dlls/ole32/moniker.c
index e77c8c4..cc83d95 100644
--- a/dlls/ole32/moniker.c
+++ b/dlls/ole32/moniker.c
@@ -1086,6 +1086,21 @@ static HRESULT get_moniker_for_progid_display_name(LPBC pbc,
IParseDisplayName *pdn;
hr = IMoniker_BindToObject(class_moniker, pbc, NULL,
&IID_IParseDisplayName, (void **)&pdn);
+ /* fallback to using IClassFactory to get IParseDisplayName -
+ * adsldp.dll depends on this */
+ if (FAILED(hr))
+ {
+ IClassFactory *pcf;
+ hr = IMoniker_BindToObject(class_moniker, pbc, NULL,
+ &IID_IClassFactory, (void **)&pcf);
+ if (SUCCEEDED(hr))
+ {
+ hr = IClassFactory_CreateInstance(pcf, NULL,
+ &IID_IParseDisplayName,
+ (void **)&pdn);
+ IClassFactory_Release(pcf);
+ }
+ }
IMoniker_Release(class_moniker);
if (SUCCEEDED(hr))
{
More information about the wine-cvs
mailing list