=?UTF-8?Q?Andr=C3=A9=20Hentschel=20?=: rpcrt4: Reorder code to make sure RpcBindingFromStringBinding[AW] cleans up ( coverity).

Alexandre Julliard julliard at winehq.org
Mon Oct 29 13:52:50 CDT 2012


Module: wine
Branch: master
Commit: 81c0e1eaa1ba41e2b27e1f968a2f2588a6ec79f3
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=81c0e1eaa1ba41e2b27e1f968a2f2588a6ec79f3

Author: André Hentschel <nerv at 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;
 }
   




More information about the wine-cvs mailing list