diff --git a/src/sysdep.c b/src/sysdep.c index c59034ce5c3..1eaf648ea78 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -3006,7 +3006,11 @@ list_system_processes (void) for (tail = proclist; CONSP (tail); tail = next) { next = XCDR (tail); - XSETCAR (tail, Fstring_to_number (XCAR (tail), Qnil)); + Lisp_Object pidstring = XCAR (tail); + Lisp_Object pid = Fstring_to_number (pidstring, Qnil); + if (!INTEGERP (pid) || XINT (pid) <= 0) + xsignal1 (Qoverflow_error, pidstring); + XSETCAR (tail, pid); } /* directory_files_internal returns the files in reverse order; undo diff --git a/src/xfaces.c b/src/xfaces.c index 77afee4587d..56df06574a7 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -3393,7 +3393,7 @@ DEFUN ("internal-set-lisp-face-attribute-from-resource", else if (EQ (attr, QCheight)) { value = Fstring_to_number (value, make_number (10)); - if (XINT (value) <= 0) + if (!INTEGERP (value) || XINT (value) <= 0) signal_error ("Invalid face height from X resource", value); } else if (EQ (attr, QCbold) || EQ (attr, QCitalic))