From a95cb30ab5eed851c6efafb5a871a6fa8860268b Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 11 Jan 2017 20:43:41 +0200 Subject: [PATCH] [SV 50021] Avoid infloop on MS-Windows with short scripts * job.c (reap_children) [WINDOWS32]: Avoid recursive call to reap_children when the argument passed to map_windows32_error_to_string is negative or too large. --- job.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/job.c b/job.c index 81248971..194d2576 100644 --- a/job.c +++ b/job.c @@ -774,9 +774,12 @@ reap_children (int block, int err) /* get exit data */ exit_code = process_exit_code (hPID); - if (werr) - fprintf (stderr, "make (e=%d): %s", exit_code, - map_windows32_error_to_string (exit_code)); + /* the extra tests of exit_code are here to prevent + map_windows32_error_to_string from calling 'fatal', + which will then call reap_children again */ + if (werr && exit_code > 0 && exit_code < WSABASEERR) + fprintf (stderr, "make (e=%d): %s", exit_code, + map_windows32_error_to_string (exit_code)); /* signal */ exit_sig = process_signal (hPID); -- 2.47.3