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. --- job.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'job.c') 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