rpcrt4: Reorder code to make sure RpcBindingFromStringBinding[AW] cleans up (coverity)
André Hentschel
nerv at dawncrow.de
Sun Oct 28 10:16:56 CDT 2012
CID 716457 & 713676 & 713677 & 713678 & 713679 & 713681 & 713682 & 713683
---
dlls/rpcrt4/rpc_binding.c | 38 ++++++++++++++++++++------------------
1 file changed, 20 insertions(+), 18 deletions(-)
diff --git a/dlls/rpcrt4/rpc_binding.c b/dlls/rpcrt4/rpc_binding.c
index 11956e3..196956c 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;
}
--
1.8.0
--
Best Regards, André Hentschel
More information about the wine-patches
mailing list