summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland McGrath <roland@redhat.com>1994-12-05 17:42:13 +0000
committerRoland McGrath <roland@redhat.com>1994-12-05 17:42:13 +0000
commit2e9779fdb40e5348a7a8c9a2bf8fc09eb674c1dc (patch)
treed1d79fd8f3c00bf1cac25e217f728c100f5c43be
parentb61a13463dd7bd3027cad643c7219114e677e836 (diff)
downloadgunmake-2e9779fdb40e5348a7a8c9a2bf8fc09eb674c1dc.tar.gz
(update_file_1): Do set_command_state (FILE, cs_not_started) only if old3.72.3
state was deps_running.
-rw-r--r--remake.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/remake.c b/remake.c
index cab83d9..fd77cb8 100644
--- a/remake.c
+++ b/remake.c
@@ -491,7 +491,16 @@ update_file_1 (file, depth)
return dep_status;
}
- set_command_state (file, cs_not_started);
+ if (file->command_state == cs_deps_running)
+ /* The commands for some deps were running on the last iteration, but
+ they have finished now. Reset the command_state to not_started to
+ simplify later bookkeeping. It is important that we do this only
+ when the prior state was cs_deps_running, because that prior state
+ was definitely propagated to FILE's also_make's by set_command_state
+ (called above), but in another state an also_make may have
+ independently changed to finished state, and we would confuse that
+ file's bookkeeping (updated, but not_started is bogus state). */
+ set_command_state (file, cs_not_started);
/* Now record which dependencies are more
recent than this file, so we can define $?. */