From be6b22a2837a7a5b12e4d3c0b845266247cfd3ad Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Sun, 14 Jun 2009 06:08:11 +0000 Subject: - Fix Savannah bug #13529 --- remake.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'remake.c') diff --git a/remake.c b/remake.c index 513cb56..4a4fb73 100644 --- a/remake.c +++ b/remake.c @@ -373,6 +373,7 @@ update_file_1 (struct file *file, unsigned int depth) FILE_TIMESTAMP this_mtime; int noexist, must_make, deps_changed; int dep_status = 0; + struct file *ofile; struct dep *d, *ad; struct dep amake; int running = 0; @@ -423,6 +424,10 @@ update_file_1 (struct file *file, unsigned int depth) /* Notice recursive update of the same file. */ start_updating (file); + /* We might change file if we find a different one via vpath; + remember this one to turn off updating. */ + ofile = file; + /* Looking at the file's modtime beforehand allows the possibility that its name may be changed by a VPATH search, and thus it may not need an implicit rule. If this were not done, the file @@ -608,6 +613,7 @@ update_file_1 (struct file *file, unsigned int depth) } finish_updating (file); + finish_updating (ofile); DBF (DB_VERBOSE, _("Finished prerequisites of target file `%s'.\n")); @@ -943,12 +949,17 @@ static int check_dep (struct file *file, unsigned int depth, FILE_TIMESTAMP this_mtime, int *must_make_ptr) { + struct file *ofile; struct dep *d; int dep_status = 0; ++depth; start_updating (file); + /* We might change file if we find a different one via vpath; + remember this one to turn off updating. */ + ofile = file; + if (file->phony || !file->intermediate) { /* If this is a non-intermediate file, update it and record whether it @@ -1054,6 +1065,8 @@ check_dep (struct file *file, unsigned int depth, } finish_updating (file); + finish_updating (ofile); + return dep_status; } -- cgit v1.2.3