hurd: Make _hurd_libc_proc_init idempotent

For the cases where _init is getting called several times during startup. Better
clean pointers anyway.
This commit is contained in:
Samuel Thibault 2020-11-13 00:21:47 +00:00
parent 7beee7b39a
commit 946dcc6fde
1 changed files with 18 additions and 10 deletions

View File

@ -114,17 +114,25 @@ libc_hidden_def (_hurd_init)
void
_hurd_libc_proc_init (char **argv)
{
/* Tell the proc server we exist, if it does. */
if (_hurd_portarray[INIT_PORT_PROC] != MACH_PORT_NULL)
_hurd_new_proc_init (argv, _hurd_intarray, _hurd_intarraysize);
if (_hurd_portarray)
{
/* Tell the proc server we exist, if it does. */
if (_hurd_portarray[INIT_PORT_PROC] != MACH_PORT_NULL)
_hurd_new_proc_init (argv, _hurd_intarray, _hurd_intarraysize);
/* All done with init ints and ports. */
__vm_deallocate (__mach_task_self (),
(vm_address_t) _hurd_intarray,
_hurd_intarraysize * sizeof (int));
__vm_deallocate (__mach_task_self (),
(vm_address_t) _hurd_portarray,
_hurd_portarraysize * sizeof (mach_port_t));
/* All done with init ints and ports. */
__vm_deallocate (__mach_task_self (),
(vm_address_t) _hurd_intarray,
_hurd_intarraysize * sizeof (int));
_hurd_intarray = NULL;
_hurd_intarraysize = 0;
__vm_deallocate (__mach_task_self (),
(vm_address_t) _hurd_portarray,
_hurd_portarraysize * sizeof (mach_port_t));
_hurd_portarray = NULL;
_hurd_portarraysize = 0;
}
}
libc_hidden_def (_hurd_libc_proc_init)