From 860a30ae1eea90f30b0f0f4ee70c90ee059cfbb8 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Sat, 4 Sep 1999 22:05:18 +0000 Subject: * Fix for infinite recursion. --- remake.c | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) (limited to 'remake.c') diff --git a/remake.c b/remake.c index 1e21e61..fe9b7ff 100644 --- a/remake.c +++ b/remake.c @@ -154,13 +154,6 @@ update_goal_chain (goals, makefiles) x = update_file (file, makefiles ? 1 : 0); check_renamed (file); - /* If we don't know what the file's last mtime was, find it. */ - if (! file->last_mtime) - { - (void) f_mtime (file, 0); - check_renamed (file); - } - /* Set the goal's `changed' flag if any commands were started by calling update_file above. We check this flag below to decide when to give an "up to date" diagnostic. */ @@ -186,22 +179,27 @@ update_goal_chain (goals, makefiles) stop = (!keep_going_flag && !question_flag && !makefiles); } - else if (file->updated && g->changed && - file->last_mtime != file->mtime_before_update) - { - /* Updating was done. If this is a makefile and - just_print_flag or question_flag is set - (meaning -n or -q was given and this file was - specified as a command-line target), don't - change STATUS. If STATUS is changed, we will - get re-exec'd, and fall into an infinite loop. */ - if (!makefiles - || (!just_print_flag && !question_flag)) - status = 0; - if (makefiles && file->dontcare) - /* This is a default makefile. Stop remaking. */ - stop = 1; - } + else + { + FILE_TIMESTAMP mtime = MTIME (file); + check_renamed (file); + if (file->updated && g->changed && + mtime != file->mtime_before_update) + { + /* Updating was done. If this is a makefile and + just_print_flag or question_flag is set + (meaning -n or -q was given and this file was + specified as a command-line target), don't + change STATUS. If STATUS is changed, we will + get re-exec'd, and enter an infinite loop. */ + if (!makefiles + || (!just_print_flag && !question_flag)) + status = 0; + if (makefiles && file->dontcare) + /* This is a default makefile; stop remaking. */ + stop = 1; + } + } } } -- cgit v1.2.3