diff --git a/src/signal_handler.c b/src/signal_handler.c
index d7aff66fa0d69e42d601dcafc72497078d9a2e7f..e0d3c1d35000af59a730054702edd1a5bc70a40e 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.52 1998/04/21 16:27:37 grubba Exp $");
+RCSID("$Id: signal_handler.c,v 1.53 1998/04/21 16:38:56 grubba Exp $");
 
 #ifdef HAVE_PASSWD_H
 # include <passwd.h>
@@ -977,10 +977,10 @@ void f_create_process(INT32 args)
 	if(tmp->type != T_ARRAY)
 	{
 	  storage.wanted_gids_array=tmp->u.array;
+	  add_ref(storage.wanted_gids_array);
 	  for(e=0;e<storage.wanted_gids_array->size;e++)
 	    if(storage.wanted_gids_array->item[e].type != T_INT)
 	      error("Invalid type for setgroups.\n");
-	  add_ref(storage.wanted_gids_array);
 	  do_initgroups=0;
 	}else{
 	  error("Invalid type for setgroups.\n");