From: Christopher Faylor Date: Tue, 3 May 2011 02:03:04 +0000 (+0000) Subject: * signal.cc (_pinfo::kill): Avoid referencing 'pid' after ESRCH. X-Git-Tag: sid-snapshot-20110601~147 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=3f359e32540b436633f88a53717dee8e0e39ee60;p=newlib-cygwin.git * signal.cc (_pinfo::kill): Avoid referencing 'pid' after ESRCH. --- diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 379e694c4..c830aabdb 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,7 @@ +2011-05-02 Christopher Faylor + + * signal.cc (_pinfo::kill): Avoid referencing 'pid' after ESRCH. + 2011-05-02 Yaakov Selkowitz * cygwin.din (pthread_attr_getstack): Export. diff --git a/winsup/cygwin/signal.cc b/winsup/cygwin/signal.cc index 0bb767ecc..78b0f1d5b 100644 --- a/winsup/cygwin/signal.cc +++ b/winsup/cygwin/signal.cc @@ -223,6 +223,7 @@ _pinfo::kill (siginfo_t& si) { int res; DWORD this_process_state; + pid_t this_pid; sig_dispatch_pending (); @@ -247,20 +248,23 @@ _pinfo::kill (siginfo_t& si) si2.si_code = SI_KERNEL; sig_send (this, si2); } + this_pid = pid; } else if (si.si_signo == 0 && this) { this_process_state = process_state; + this_pid = pid; res = 0; } else { set_errno (ESRCH); this_process_state = 0; + this_pid = -1; res = -1; } - syscall_printf ("%d = _pinfo::kill (%d, %d), process_state %p", res, pid, + syscall_printf ("%d = _pinfo::kill (%d, %d), process_state %p", res, this_pid, si.si_signo, this_process_state); return res; }