2008/11/30 Austin English austinenglish@gmail.com:
- if( !ppv)
return E_INVALIDARG;
- /* get COM tls */
- info = COM_CurrentInfo();
- if( !info)
Please try to keep the style consistent here. The style that the rest of the file uses is a space after the "if" and no space inside the brackets.
return E_OUTOFMEMORY;
- hr = RPC_E_CALL_COMPLETE;
- if( info->ctx_call)
- {
hr = IUnknown_QueryInterface( info->ctx_call, riid, ppv);
- }
- if (FAILED(hr))
...
- /* Receives a pointer to the call context object of the call currently
in progress. This value is returned so that the original call context
can be restored by the custom marshaller.
The returned pointer will be NULL if there was no call in progress. */
- *ppOldObject = info->ctx_call;
- /* It may be NULL if you are calling CoSwitchCallContext to switch back
to the original call context and there was no original call context. */
- info->ctx_call = pNewObject;
You don't take a reference to the object that is passed-in. This is against COM semantics and so requires a test case to prove that this is indeed what the function does.