Module: wine Branch: master Commit: 81c0e1eaa1ba41e2b27e1f968a2f2588a6ec79f3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=81c0e1eaa1ba41e2b27e1f968a...
Author: André Hentschel nerv@dawncrow.de Date: Sun Oct 28 16:16:56 2012 +0100
rpcrt4: Reorder code to make sure RpcBindingFromStringBinding[AW] cleans up (coverity).
---
dlls/rpcrt4/rpc_binding.c | 38 ++++++++++++++++++++------------------ 1 files changed, 20 insertions(+), 18 deletions(-)
diff --git a/dlls/rpcrt4/rpc_binding.c b/dlls/rpcrt4/rpc_binding.c index 11956e3..8152f87 100644 --- a/dlls/rpcrt4/rpc_binding.c +++ b/dlls/rpcrt4/rpc_binding.c @@ -851,10 +851,16 @@ RPC_STATUS WINAPI RpcBindingFromStringBindingA( RPC_CSTR StringBinding, RPC_BIND
if (ret == RPC_S_OK) ret = RPCRT4_CreateBindingA(&bind, FALSE, (char*)Protseq); - if (ret != RPC_S_OK) return ret; - ret = RPCRT4_SetBindingObject(bind, &Uuid); - if (ret == RPC_S_OK) - ret = RPCRT4_CompleteBindingA(bind, (char*)NetworkAddr, (char*)Endpoint, (char*)Options); + if (ret == RPC_S_OK) { + ret = RPCRT4_SetBindingObject(bind, &Uuid); + if (ret == RPC_S_OK) + ret = RPCRT4_CompleteBindingA(bind, (char*)NetworkAddr, (char*)Endpoint, (char*)Options); + + if (ret == RPC_S_OK) + *Binding = (RPC_BINDING_HANDLE)bind; + else + RPCRT4_ReleaseBinding(bind); + }
RpcStringFreeA(&Options); RpcStringFreeA(&Endpoint); @@ -862,11 +868,6 @@ RPC_STATUS WINAPI RpcBindingFromStringBindingA( RPC_CSTR StringBinding, RPC_BIND RpcStringFreeA(&Protseq); RpcStringFreeA(&ObjectUuid);
- if (ret == RPC_S_OK) - *Binding = (RPC_BINDING_HANDLE)bind; - else - RPCRT4_ReleaseBinding(bind); - return ret; }
@@ -890,10 +891,16 @@ RPC_STATUS WINAPI RpcBindingFromStringBindingW( RPC_WSTR StringBinding, RPC_BIND
if (ret == RPC_S_OK) ret = RPCRT4_CreateBindingW(&bind, FALSE, Protseq); - if (ret != RPC_S_OK) return ret; - ret = RPCRT4_SetBindingObject(bind, &Uuid); - if (ret == RPC_S_OK) - ret = RPCRT4_CompleteBindingW(bind, NetworkAddr, Endpoint, Options); + if (ret == RPC_S_OK) { + ret = RPCRT4_SetBindingObject(bind, &Uuid); + if (ret == RPC_S_OK) + ret = RPCRT4_CompleteBindingW(bind, NetworkAddr, Endpoint, Options); + + if (ret == RPC_S_OK) + *Binding = (RPC_BINDING_HANDLE)bind; + else + RPCRT4_ReleaseBinding(bind); + }
RpcStringFreeW(&Options); RpcStringFreeW(&Endpoint); @@ -901,11 +908,6 @@ RPC_STATUS WINAPI RpcBindingFromStringBindingW( RPC_WSTR StringBinding, RPC_BIND RpcStringFreeW(&Protseq); RpcStringFreeW(&ObjectUuid);
- if (ret == RPC_S_OK) - *Binding = (RPC_BINDING_HANDLE)bind; - else - RPCRT4_ReleaseBinding(bind); - return ret; }