- Make IsEqualGUID typesafe for c++

[SHELL32]
- Properly call IsEqualIID in _ILIsControlPanel. Should fix CORE-8891.

svn path=/trunk/; revision=66938
This commit is contained in:
Giannis Adamopoulos 2015-03-28 21:11:42 +00:00
parent 3b87756ab2
commit 747bbec4bb
2 changed files with 8 additions and 4 deletions

View file

@ -332,12 +332,12 @@ HRESULT WINAPI CDrivesFolder::CreateViewObject(HWND hwndOwner, REFIID riid, LPVO
static BOOL _ILIsControlPanel(LPCITEMIDLIST pidl) static BOOL _ILIsControlPanel(LPCITEMIDLIST pidl)
{ {
IID *iid = _ILGetGUIDPointer(pidl); GUID *guid = _ILGetGUIDPointer(pidl);
TRACE("(%p)\n", pidl); TRACE("(%p)\n", pidl);
if (iid) if (guid)
return IsEqualIID(iid, CLSID_ControlPanel); return IsEqualIID(*guid, CLSID_ControlPanel);
return FALSE; return FALSE;
} }

View file

@ -126,7 +126,11 @@ __inline int InlineIsEqualGUID(REFGUID rguid1, REFGUID rguid2)
((unsigned long *) &rguid1)[2] == ((unsigned long *) &rguid2)[2] && ((unsigned long *) &rguid1)[2] == ((unsigned long *) &rguid2)[2] &&
((unsigned long *) &rguid1)[3] == ((unsigned long *) &rguid2)[3]); ((unsigned long *) &rguid1)[3] == ((unsigned long *) &rguid2)[3]);
} }
#define IsEqualGUID(rguid1, rguid2) (!memcmp(&(rguid1), &(rguid2), sizeof(GUID)))
__inline int IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
{
return !memcmp(&rguid1, &rguid2, sizeof(GUID));
}
#else /* defined(__cplusplus) && !defined(CINTERFACE) */ #else /* defined(__cplusplus) && !defined(CINTERFACE) */