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