Aric Stewart wrote:
- if (r == S_OK);
I don't think you want to put a semi colon there.
- {
if (pwzLocation)
IHlink_SetStringReference(*(IHlink**)ppvObj, HLINKSETF_LOCATION,
NULL, pwzLocation);
if (pwzFriendlyName)
IHlink_SetFriendlyName(*(IHlink**)ppvObj, pwzFriendlyName);
if (pihlsite)
IHlink_SetHlinkSite(*(IHlink**)ppvObj, pihlsite, dwSiteData);
if (pimkTrgt)
IHlink_SetMonikerReference(*(IHlink**)ppvObj, 0, pimkTrgt,
pwzLocation);
Rather than continually casting ppvObj, why not make a temporary variable of type IHlink?
+static HRESULT WINAPI IHlink_fnGetMonikerReference(IHlink* iface,
DWORD dwWhichRef, IMoniker **ppimkTarget, LPWSTR *ppwzLocation)
+{
- IHlinkImpl *This = (IHlinkImpl*)iface;
- TRACE("(%p) -> (%li %p %p)\n",This, dwWhichRef, ppimkTarget, ppwzLocation);
- if(ppimkTarget)
- {
if (This->Moniker)
*ppimkTarget = This->Moniker;
else if (This->Site)
IHlinkSite_GetMoniker(This->Site, This->SiteData,
OLEGETMONIKER_FORCEASSIGN, OLEWHICHMK_CONTAINER,
(LPVOID)ppimkTarget);
- }
- return S_OK;
+}
The above function doesn't look right. You don't use dwWhichRef or ppwzLocation, and you unconditionally return S_OK even when *ppimkTarget is uninitialized or IHlinkSite_GetMoniker fails.
Mike