[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] libfshelp: improve error handling in fshelp_start_translator_lon
From: |
Justus Winter |
Subject: |
[PATCH] libfshelp: improve error handling in fshelp_start_translator_long |
Date: |
Thu, 28 Nov 2013 13:11:44 +0100 |
Properly deallocate all ports and terminate the started translator if
an error occurs.
* libfshelp/start-translator-long.c (fshelp_start_translator_long):
Improve error handling.
---
libfshelp/start-translator-long.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/libfshelp/start-translator-long.c
b/libfshelp/start-translator-long.c
index 55fb0ff..64a20be 100644
--- a/libfshelp/start-translator-long.c
+++ b/libfshelp/start-translator-long.c
@@ -285,10 +285,7 @@ fshelp_start_translator_long (fshelp_open_fn_t
underlying_open_fn,
ports[INIT_PORT_BOOTSTRAP] = saveport;
if (err)
- {
- task_terminate (task);
- goto lose;
- }
+ goto lose_task;
/* Ask to be told if TASK dies. */
err =
@@ -297,13 +294,17 @@ fshelp_start_translator_long (fshelp_open_fn_t
underlying_open_fn,
bootstrap, MACH_MSG_TYPE_MAKE_SEND_ONCE,
&prev_notify);
if (err)
- return err;
+ goto lose_task;
/* Ok, cool, we've got a running(?) program, now rendezvous with it if
possible using the startup protocol on the bootstrap port... */
err = service_fsys_startup(underlying_open_fn, cookie, bootstrap,
timeout, control, task);
+ lose_task:
+ if (err)
+ task_terminate (task);
+
lose:
if (!ports_moved)
{
--
1.7.10.4
- [PATCH 06/11] libports: improve error handling in ports_transfer_right, (continued)
- [PATCH 06/11] libports: improve error handling in ports_transfer_right, Justus Winter, 2013/11/27
- [PATCH 07/11] libdiskfs: improve error reporting in diskfs_start_disk_pager, Justus Winter, 2013/11/27
- [PATCH 10/11] proc: store the privileged host port in _hurd_host_priv, Justus Winter, 2013/11/27
- [PATCH 09/11] libports: improve error reporting in adjust_priority, Justus Winter, 2013/11/27
- [PATCH 08/11] libfshelp: improve error handling in fshelp_start_translator_long, Justus Winter, 2013/11/27
- [PATCH 11/11] proc: store the device master port in _hurd_device_master, Justus Winter, 2013/11/27
- Re: [PATCH 01/11] libshouldbeinlibc: fix minor port leak in maptime_map, Samuel Thibault, 2013/11/27