From 367a49591e2b2335f3f5b42e290651d4df77e933 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 22 Mar 2006 13:16:03 +0000 Subject: Fixed Savannah bug #16140. --- implicit.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'implicit.c') diff --git a/implicit.c b/implicit.c index a5d3700..878d154 100644 --- a/implicit.c +++ b/implicit.c @@ -442,6 +442,7 @@ pattern_search (struct file *file, int archive, struct file *f; unsigned int failed = 0; int check_lastslash; + int file_variables_set = 0; rule = tryrules[i]; @@ -479,9 +480,9 @@ pattern_search (struct file *file, int archive, strncpy (stem_str, stem, stemlen); stem_str[stemlen] = '\0'; - /* Temporary assign STEM to file->stem and set file variables. */ + /* Temporary assign STEM to file->stem (needed to set file + variables below). */ file->stem = stem_str; - set_file_variables (file); /* Try each dependency; see if it "exists". */ @@ -550,6 +551,15 @@ pattern_search (struct file *file, int archive, depname[len] = '\0'; } + /* Set file variables. Note that we cannot do it once + at the beginning of the function because of the stem + value. */ + if (!file_variables_set) + { + set_file_variables (file); + file_variables_set = 1; + } + p2 = variable_expand_for_file (depname, file); } else -- cgit v1.2.3