Module: wine Branch: master Commit: c1abc5a86509a1afb2a29a803898272735005607 URL: https://source.winehq.org/git/wine.git/?a=commit;h=c1abc5a86509a1afb2a29a803...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Wed Jan 22 12:11:47 2020 +0300
ole32: Fix bind speed used in ParseDisplayName() for item moniker.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
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; }
/******************************************************************************