[PATCH 2/2] ole32: Fix bind speed used in ParseDisplayName() for item moniker.
Nikolay Sivov
nsivov at codeweavers.com
Wed Jan 22 03:11:47 CST 2020
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/ole32/itemmoniker.c | 46 ++++++++++++++++------------------------
1 file changed, 18 insertions(+), 28 deletions(-)
diff --git a/dlls/ole32/itemmoniker.c b/dlls/ole32/itemmoniker.c
index c37d7a87c5..79fb293c38 100644
--- a/dlls/ole32/itemmoniker.c
+++ b/dlls/ole32/itemmoniker.c
@@ -771,45 +771,35 @@ static HRESULT WINAPI ItemMonikerImpl_GetDisplayName(IMoniker* iface,
/******************************************************************************
* ItemMoniker_ParseDisplayName
******************************************************************************/
-static HRESULT WINAPI ItemMonikerImpl_ParseDisplayName(IMoniker* iface,
- IBindCtx* pbc,
- IMoniker* pmkToLeft,
- LPOLESTR pszDisplayName,
- ULONG* pchEaten,
- IMoniker** ppmkOut)
+static HRESULT WINAPI ItemMonikerImpl_ParseDisplayName(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft,
+ LPOLESTR displayname, ULONG *eaten, IMoniker **ppmkOut)
{
ItemMonikerImpl *This = impl_from_IMoniker(iface);
- IOleItemContainer* poic=0;
- IParseDisplayName* ppdn=0;
+ IOleItemContainer *container;
+ IParseDisplayName *parser;
LPOLESTR displayName;
- HRESULT res;
-
- TRACE("%s\n", debugstr_w(pszDisplayName));
+ HRESULT hr;
- /* If pmkToLeft is NULL, this method returns MK_E_SYNTAX */
- if (pmkToLeft==NULL)
+ TRACE("%p, %p, %p, %s, %p, %p.\n", iface, pbc, pmkToLeft, debugstr_w(displayname), eaten, ppmkOut);
+ if (!pmkToLeft)
return MK_E_SYNTAX;
- else{
- /* Otherwise, the method calls IMoniker::BindToObject on the pmkToLeft parameter, requesting an */
- /* IParseDisplayName interface pointer to the object identified by the moniker, and passes the display */
- /* name to IParseDisplayName::ParseDisplayName */
- res=IMoniker_BindToObject(pmkToLeft,pbc,NULL,&IID_IOleItemContainer,(void**)&poic);
-
- if (SUCCEEDED(res)){
-
- res=IOleItemContainer_GetObject(poic,This->itemName,BINDSPEED_MODERATE,pbc,&IID_IParseDisplayName,(void**)&ppdn);
+ hr = IMoniker_BindToObject(pmkToLeft, pbc, NULL, &IID_IOleItemContainer, (void **)&container);
+ if (SUCCEEDED(hr))
+ {
+ hr = IOleItemContainer_GetObject(container, This->itemName, get_bind_speed_from_bindctx(pbc), pbc,
+ &IID_IParseDisplayName, (void **)&parser);
- res=IMoniker_GetDisplayName(iface,pbc,NULL,&displayName);
+ hr = IMoniker_GetDisplayName(iface,pbc,NULL,&displayName);
- res=IParseDisplayName_ParseDisplayName(ppdn,pbc,displayName,pchEaten,ppmkOut);
+ hr = IParseDisplayName_ParseDisplayName(parser, pbc, displayName, eaten, ppmkOut);
- IOleItemContainer_Release(poic);
- IParseDisplayName_Release(ppdn);
- }
+ IOleItemContainer_Release(container);
+ IParseDisplayName_Release(parser);
}
- return res;
+
+ return hr;
}
/******************************************************************************
--
2.24.1
More information about the wine-devel
mailing list