From 7212b571a5b8ba855c47e16db8cde829a1340a76 Mon Sep 17 00:00:00 2001 From: Ken Brown Date: Sat, 16 Sep 2017 22:04:19 -0400 Subject: [PATCH] cygwin: Remove comparison of 'this' to NULL in _pinfo::exists Fix all callers. --- winsup/cygwin/fhandler_termios.cc | 2 +- winsup/cygwin/pinfo.cc | 2 +- winsup/cygwin/signal.cc | 2 +- winsup/cygwin/sigproc.cc | 5 +++-- winsup/cygwin/times.cc | 10 +++++++--- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/winsup/cygwin/fhandler_termios.cc b/winsup/cygwin/fhandler_termios.cc index 19fcfc9cd..4ce53433a 100644 --- a/winsup/cygwin/fhandler_termios.cc +++ b/winsup/cygwin/fhandler_termios.cc @@ -131,7 +131,7 @@ tty_min::kill_pgrp (int sig) for (unsigned i = 0; i < pids.npids; i++) { _pinfo *p = pids[i]; - if (!p->exists () || p->ctty != ntty || p->pgid != pgid) + if (!p || !p->exists () || p->ctty != ntty || p->pgid != pgid) continue; if (p == myself) killself = sig != __SIGSETPGRP && !exit_state; diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc index 7193f6884..e4eef8b3c 100644 --- a/winsup/cygwin/pinfo.cc +++ b/winsup/cygwin/pinfo.cc @@ -529,7 +529,7 @@ _pinfo::set_ctty (fhandler_termios *fh, int flags) bool __reg1 _pinfo::exists () { - return this && process_state && !(process_state & (PID_EXITED | PID_REAPED | PID_EXECED)); + return process_state && !(process_state & (PID_EXITED | PID_REAPED | PID_EXECED)); } bool diff --git a/winsup/cygwin/signal.cc b/winsup/cygwin/signal.cc index 016fce1de..69c5e2aad 100644 --- a/winsup/cygwin/signal.cc +++ b/winsup/cygwin/signal.cc @@ -332,7 +332,7 @@ kill_pgrp (pid_t pid, siginfo_t& si) { _pinfo *p = pids[i]; - if (!p->exists ()) + if (!p || !p->exists ()) continue; /* Is it a process we want to kill? */ diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index 36fc64903..92fa5ea3d 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -152,7 +152,8 @@ proc_can_be_signalled (_pinfo *p) bool __reg1 pid_exists (pid_t pid) { - return pinfo (pid)->exists (); + pinfo p (pid); + return p && p->exists (); } /* Return true if this is one of our children, false otherwise. */ @@ -1135,7 +1136,7 @@ remove_proc (int ci) if (_my_tls._ctinfo != procs[ci].wait_thread) procs[ci].wait_thread->terminate_thread (); } - else if (procs[ci]->exists ()) + else if (procs[ci] && procs[ci]->exists ()) return true; sigproc_printf ("removing procs[%d], pid %d, nprocs %d", ci, procs[ci]->pid, diff --git a/winsup/cygwin/times.cc b/winsup/cygwin/times.cc index fb480513f..5da0bbc7a 100644 --- a/winsup/cygwin/times.cc +++ b/winsup/cygwin/times.cc @@ -522,7 +522,7 @@ clock_gettime (clockid_t clk_id, struct timespec *tp) pid = getpid (); pinfo p (pid); - if (!p->exists ()) + if (!p || !p->exists ()) { set_errno (EINVAL); return -1; @@ -746,8 +746,12 @@ clock_setres (clockid_t clk_id, struct timespec *tp) extern "C" int clock_getcpuclockid (pid_t pid, clockid_t *clk_id) { - if (pid != 0 && !pinfo (pid)->exists ()) - return (ESRCH); + if (pid != 0) + { + pinfo p (pid); + if (!p || !p->exists ()) + return (ESRCH); + } *clk_id = (clockid_t) PID_TO_CLOCKID (pid); return 0; }