Formerly ../hurd/hurdkill.c.~5~
[kopensolaris-gnu/glibc.git] / hurd / hurdkill.c
index a5391a3..234ab22 100644 (file)
@@ -29,7 +29,7 @@ Cambridge, MA 02139, USA.  */
    If PID is < -1, send SIG to all processes in process group - PID.
    SIG and REFPORT are passed along in the request message.  */
 error_t
-_hurd_sig_post (pid_t pid, int sig, mach_port_t arg_refport)
+hurd_sig_post (pid_t pid, int sig, mach_port_t arg_refport)
 {
   int delivered = 0;           /* Set when we deliver any signal.  */
   error_t err;
@@ -50,16 +50,17 @@ _hurd_sig_post (pid_t pid, int sig, mach_port_t arg_refport)
   if (pid <= 0)
     {
       /* Send SIG to each process in pgrp (- PID).  */
-      mach_msg_type_number_t npids, i;
-      pid_t *pids;
+      mach_msg_type_number_t npids = 10, i;
+      pid_t pidsbuf[10], *pids = pidsbuf;
       
       err = __proc_getpgrppids (proc, - pid, &pids, &npids);
       if (!err)
        {
          for (i = 0; i < npids; ++i)
            kill_pid (pids[i]);
-         __vm_deallocate (__mach_task_self (),
-                          (vm_address_t) pids, npids * sizeof (pids[0]));
+         if (pids != pidsbuf)
+           __vm_deallocate (__mach_task_self (),
+                            (vm_address_t) pids, npids * sizeof (pids[0]));
        }
     }
   else