void dispatch_rpc() returns a value
Robert Shearman
rob at codeweavers.com
Sat May 27 17:51:55 CDT 2006
Bang Jun-Young wrote:
> Hi,
>
> I wonder how this has been possible so far:
>
> static void __RPC_STUB dispatch_rpc(RPC_MESSAGE *msg)
> {
> struct dispatch_params *params;
> APARTMENT *apt;
> IPID ipid;
> HRESULT hr;
>
> RpcBindingInqObject(msg->Handle, &ipid);
>
> TRACE("ipid = %s, iMethod = %d\n", debugstr_guid(&ipid),
> msg->ProcNum);
>
> params = HeapAlloc(GetProcessHeap(), 0, sizeof(*params));
> if (!params) return RpcRaiseException(E_OUTOFMEMORY);
>
> hr = ipid_get_dispatch_params(&ipid, &apt, ¶ms->stub,
> ¶ms->chan);
> if (hr != S_OK)
> {
> ERR("no apartment found for ipid %s\n", debugstr_guid(&ipid));
> return RpcRaiseException(hr);
> }
>
> dispatch_rpc() shouldn't return anything since it's a void function,
> but it actually does.
Thank you for reviewing the code.
RpcRaiseException is also a void function.
Rather than write:
RpcRaiseException(hr);
return;
I chose to write:
return RpcRaiseException(hr);
I didn't think the latter would be confusing as I assumed everyone would
know that C compilers would warn if you tried to return a vale from a
void function. Also, even if it did return something when it shouldn't,
it wouldn't affect the calling function on x86 since the eax register
would have been assumed to be trashed anyway.
--
Rob Shearman
More information about the wine-devel
mailing list