summaryrefslogtreecommitdiffstats
path: root/sys/kern/init_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/init_main.c')
-rw-r--r--sys/kern/init_main.c30
1 files changed, 17 insertions, 13 deletions
diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c
index d439a19..fffe109 100644
--- a/sys/kern/init_main.c
+++ b/sys/kern/init_main.c
@@ -39,7 +39,7 @@
* SUCH DAMAGE.
*
* @(#)init_main.c 8.9 (Berkeley) 1/21/94
- * $Id: init_main.c,v 1.97 1998/10/06 11:55:40 dfr Exp $
+ * $Id: init_main.c,v 1.98 1998/10/09 23:42:47 peter Exp $
*/
#include "opt_devfs.h"
@@ -143,26 +143,30 @@ sysinit_add(set)
struct sysinit **xipp;
int count = 0;
- for (sipp = sysinit; *sipp; sipp++)
- count++;
- for (sipp = set; *sipp; sipp++)
- count++;
if (newsysinit)
- for (sipp = set; *sipp; sipp++)
+ for (sipp = newsysinit; *sipp; sipp++)
count++;
+ else
+ for (sipp = sysinit; *sipp; sipp++)
+ count++;
+ for (sipp = set; *sipp; sipp++)
+ count++;
+ count++; /* Trailing NULL */
newset = malloc(count * sizeof(*sipp), M_TEMP, M_NOWAIT);
if (newset == NULL)
panic("cannot malloc for sysinit");
xipp = newset;
- for (sipp = sysinit; *sipp; sipp++)
- *xipp++ = *sipp;
- for (sipp = set; *sipp; sipp++)
- *xipp++ = *sipp;
- if (newsysinit) {
+ if (newsysinit)
for (sipp = newsysinit; *sipp; sipp++)
*xipp++ = *sipp;
- free(newset, M_TEMP);
- }
+ else
+ for (sipp = sysinit; *sipp; sipp++)
+ *xipp++ = *sipp;
+ for (sipp = set; *sipp; sipp++)
+ *xipp++ = *sipp;
+ *xipp = NULL;
+ if (newsysinit)
+ free(newsysinit, M_TEMP);
newsysinit = newset;
}
OpenPOWER on IntegriCloud