diff --git a/src/signal_handler.c b/src/signal_handler.c
index b696c2587e132dedce6a15ea1bddc1304e0f34e9..c442ded18038231a75c78c4eb1aad742461683ad 100644
--- a/src/signal_handler.c
+++ b/src/signal_handler.c
@@ -22,7 +22,7 @@
 #include "builtin_functions.h"
 #include <signal.h>
 
-RCSID("$Id: signal_handler.c,v 1.42 1998/04/06 20:38:52 hubbe Exp $");
+RCSID("$Id: signal_handler.c,v 1.43 1998/04/06 23:56:08 hubbe Exp $");
 
 #ifdef HAVE_PASSWD_H
 # include <passwd.h>
@@ -823,7 +823,7 @@ void f_create_process(INT32 args)
   }
 #else /* __NT__ */
   {
-    struct svalue *stack_save=sp-args;
+    struct svalue *stack_save=sp;
     ONERROR err;
     struct passwd *pw=0;
     struct perishables storage;
@@ -1014,7 +1014,8 @@ void f_create_process(INT32 args)
     if(storage.wanted_gids_array)
     {
       int e;
-      storage.wanted_gids=(gid_t *)xalloc(sizeof(gid_t) * storage.wanted_gids_array->size);
+      storage.wanted_gids=(gid_t *)xalloc(sizeof(gid_t) * (storage.wanted_gids_array->size + 1));
+      storage.wanted_gids[0]=65534; /* Paranoia */
       for(e=0;e<storage.wanted_gids_array->size;e++)
       {
 	switch(storage.wanted_gids_array->item[e].type)