From 0d12b1a207a6cce4d87c7023065a37ea035bef44 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 8 Dec 2012 10:26:36 +0000 Subject: job.c (create_batch_file): Fix last change: always increment the counter of batch files before trying to use it. --- ChangeLog | 5 +++++ job.c | 18 ++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3a70bef..9c562be 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2012-12-08 Eli Zaretskii + + * job.c (create_batch_file): Fix last change: always increment the + counter of batch files before trying to use it. + 2012-12-07 Eli Zaretskii * job.c (construct_command_argv_internal): Remove " from diff --git a/job.c b/job.c index 4c87ca0..970a2fc 100644 --- a/job.c +++ b/job.c @@ -273,7 +273,7 @@ create_batch_file (char const *base, int unixy, int *fd) available, while it really isn't. This happens in parallel builds, where Make doesn't wait for one job to finish before it launches the next one. */ - static unsigned uniq = 1; + static unsigned uniq = 0; static int second_loop = 0; const unsigned sizemax = strlen (base) + strlen (ext) + 10; @@ -283,6 +283,16 @@ create_batch_file (char const *base, int unixy, int *fd) path_is_dot = 1; } + ++uniq; + if (uniq >= 0x10000 && !second_loop) + { + /* If we already had 64K batch files in this + process, make a second loop through the numbers, + looking for free slots, i.e. files that were + deleted in the meantime. */ + second_loop = 1; + uniq = 1; + } while (path_size > 0 && path_size + sizemax < sizeof temp_path && !(uniq >= 0x10000 && second_loop)) @@ -309,12 +319,8 @@ create_batch_file (char const *base, int unixy, int *fd) ++uniq; if (uniq == 0x10000 && !second_loop) { - /* If we already had 64K batch files in this - process, make a second loop through the numbers, - looking for free slots, i.e. files that were - deleted in the meantime. */ second_loop = 1; - uniq = 0; + uniq = 1; } } -- cgit v1.2.3