aboutsummaryrefslogtreecommitdiff
path: root/hurd
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2022-01-16 00:02:16 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2022-01-16 00:02:16 +0100
commit41a11a5e83265c7718787b9cfb8b3c109c59b980 (patch)
treedc43b3b477e0cddcbd4a8d0e4304a428d74d216d /hurd
parent54dda2cdba0766be599e747ee4660aae80aa8647 (diff)
downloadglibc-41a11a5e83265c7718787b9cfb8b3c109c59b980.zip
glibc-41a11a5e83265c7718787b9cfb8b3c109c59b980.tar.gz
glibc-41a11a5e83265c7718787b9cfb8b3c109c59b980.tar.bz2
hurd: optimize exec cleanup
When ports are nul we do not need to request their deallocation. It is also useless to look for them in portnames.
Diffstat (limited to 'hurd')
-rw-r--r--hurd/hurdexec.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/hurd/hurdexec.c b/hurd/hurdexec.c
index d5a20cb..0545935 100644
--- a/hurd/hurdexec.c
+++ b/hurd/hurdexec.c
@@ -383,19 +383,21 @@ retry:
exec call. */
for (i = 0; i < _hurd_nports; ++i)
- {
- *pdp++ = ports[i];
- for (j = 0; j < nportnames; j++)
- if (portnames[j] == ports[i])
- portnames[j] = MACH_PORT_NULL;
- }
+ if (ports[i] != MACH_PORT_NULL)
+ {
+ *pdp++ = ports[i];
+ for (j = 0; j < nportnames; j++)
+ if (portnames[j] == ports[i])
+ portnames[j] = MACH_PORT_NULL;
+ }
for (i = 0; i < dtablesize; ++i)
- {
- *pdp++ = dtable[i];
- for (j = 0; j < nportnames; j++)
- if (portnames[j] == dtable[i])
- portnames[j] = MACH_PORT_NULL;
- }
+ if (dtable[i] != MACH_PORT_NULL)
+ {
+ *pdp++ = dtable[i];
+ for (j = 0; j < nportnames; j++)
+ if (portnames[j] == dtable[i])
+ portnames[j] = MACH_PORT_NULL;
+ }
/* Pack ports to be destroyed together. */
for (i = 0, j = 0; i < nportnames; i++)