bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 3/5] libports: fix error handling in _ports_create_port_internal


From: Justus Winter
Subject: [PATCH 3/5] libports: fix error handling in _ports_create_port_internal
Date: Fri, 25 Oct 2013 10:30:22 +0200

Previously any err value set before reaching lose: was overwritten and
thus not properly propagated.

Found using the Clang Static Analyzer.

* libports/create-internal.c (_ports_create_port_internal): Fix error
  handling.
---
 libports/create-internal.c |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/libports/create-internal.c b/libports/create-internal.c
index c60f6fd..ea3852d 100644
--- a/libports/create-internal.c
+++ b/libports/create-internal.c
@@ -109,10 +109,11 @@ _ports_create_port_internal (struct port_class *class,
   err = EINTR;
  lose:
   pthread_mutex_unlock (&_ports_lock);
+  error_t e;
  lose_unlocked:
-  err = mach_port_mod_refs (mach_task_self (), port,
-                           MACH_PORT_RIGHT_RECEIVE, -1);
-  assert_perror (err);
+  e = mach_port_mod_refs (mach_task_self (), port,
+                         MACH_PORT_RIGHT_RECEIVE, -1);
+  assert_perror (e);
   free (pi);
 
   return err;
-- 
1.7.10.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]