From e437226241ac0c1776ac1c82688a472b3f8ed581 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 10 Aug 2005 10:21:13 +0000 Subject: [PATCH] Fixed Savannah bug #13881. --- ChangeLog | 6 ++++++ read.c | 24 ++++++++++++------------ tests/ChangeLog | 4 ++++ tests/scripts/features/statipattrules | 11 +++++++++++ 4 files changed, 33 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4d2c55be..8ce5e999 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-08-10 Boris Kolpackov + + * read.c (record_files): Move code that sets stem for static + pattern rules out of the if (!two_colon) condition so it is + also executed for two-colon rules. Fixes Savannah bug #13881. + 2005-08-07 Paul D. Smith * w32/pathstuff.c (getcwd_fs): Fix warning about assignment in a diff --git a/read.c b/read.c index 65a352ff..0f07ee91 100644 --- a/read.c +++ b/read.c @@ -2106,18 +2106,6 @@ record_files (struct nameseq *filenames, char *pattern, char *pattern_percent, if (cmds != 0) f->updating = 1; } - - /* If this is a static pattern rule, set the file's stem to - the part of its name that matched the `%' in the pattern, - so you can use $* in the commands. */ - if (pattern != 0) - { - static char *percent = "%"; - char *buffer = variable_expand (""); - char *o = patsubst_expand (buffer, name, pattern, percent, - pattern_percent+1, percent+1); - f->stem = savestring (buffer, o - buffer); - } } else { @@ -2143,6 +2131,18 @@ record_files (struct nameseq *filenames, char *pattern, char *pattern_percent, f->cmds = cmds; } + /* If this is a static pattern rule, set the file's stem to + the part of its name that matched the `%' in the pattern, + so you can use $* in the commands. */ + if (pattern != 0) + { + static char *percent = "%"; + char *buffer = variable_expand (""); + char *o = patsubst_expand (buffer, name, pattern, percent, + pattern_percent+1, percent+1); + f->stem = savestring (buffer, o - buffer); + } + /* Free name if not needed further. */ if (f != 0 && name != f->name && (name < f->name || name > f->name + strlen (f->name))) diff --git a/tests/ChangeLog b/tests/ChangeLog index a2050745..cb3edebc 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,7 @@ +2005-08-10 Boris Kolpackov + + * scripts/features/statipattrules: Add a test for Savannah bug #13881. + 2005-08-07 Paul D. Smith * scripts/features/parallelism: Add a test for a bug reported by diff --git a/tests/scripts/features/statipattrules b/tests/scripts/features/statipattrules index b5459b9e..0ca2bb7b 100644 --- a/tests/scripts/features/statipattrules +++ b/tests/scripts/features/statipattrules @@ -73,4 +73,15 @@ foo.x bar.x: %.x : ; @echo $@ 'foo.x '); + +# TEST #6 -- bug #13881: double colon static pattern rule does not +# substitute %. +# +run_make_test(' +foo.bar:: %.bar: %.baz +foo.baz: ;@: +', +'', +''); + 1;