2008/11/30 Austin English <[EMAIL PROTECTED]>: > + 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. -- Rob Shearman