From: Alexandre Duret-Lutz Date: Sat, 29 Nov 2003 21:47:27 +0000 (+0000) Subject: * lib/Automake/Variable.pm (_do_recursive_traversal): Do not X-Git-Tag: Release-1-7h~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0099f67b215c766b3dfe81ec383e03be5c23085f;p=thirdparty%2Fautomake.git * lib/Automake/Variable.pm (_do_recursive_traversal): Do not update @_substfroms and @_substfroms for undefined variables. * tests/substre2.test: New file. * tests/Makefile.am (TESTS): Add substre2.test. --- diff --git a/ChangeLog b/ChangeLog index e6c59c6a0..36208e046 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2003-11-29 Alexandre Duret-Lutz + * lib/Automake/Variable.pm (_do_recursive_traversal): Do not + update @_substfroms and @_substfroms for undefined variables. + * tests/substre2.test: New file. + * tests/Makefile.am (TESTS): Add substre2.test. + * lib/Automake/VarDef.pm (value): Rename as ... (raw_value): ... this. (value): New method, strip # and \\\n. diff --git a/doc/stamp-vti b/doc/stamp-vti index efe9b4433..3ba121016 100644 --- a/doc/stamp-vti +++ b/doc/stamp-vti @@ -1,4 +1,4 @@ -@set UPDATED 27 November 2003 +@set UPDATED 29 November 2003 @set UPDATED-MONTH November 2003 @set EDITION 1.7g @set VERSION 1.7g diff --git a/doc/version.texi b/doc/version.texi index efe9b4433..3ba121016 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -1,4 +1,4 @@ -@set UPDATED 27 November 2003 +@set UPDATED 29 November 2003 @set UPDATED-MONTH November 2003 @set EDITION 1.7g @set VERSION 1.7g diff --git a/lib/Automake/Variable.pm b/lib/Automake/Variable.pm index d9d097703..0cd72cced 100644 --- a/lib/Automake/Variable.pm +++ b/lib/Automake/Variable.pm @@ -1323,13 +1323,14 @@ sub _do_recursive_traversal ($$&&$$) $to = $3; $from = quotemeta $2; } - push @_substfroms, $from; - push @_substtos, $to; my $subvar = var ($subvarname); # Don't recurse into undefined variables. next unless $subvar; + push @_substfroms, $from; + push @_substtos, $to; + my @res = $subvar->_do_recursive_traversal ($parent, $fun_item, $fun_collect, diff --git a/tests/Makefile.am b/tests/Makefile.am index a5284cb15..0234298f6 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -445,6 +445,7 @@ subpkg2.test \ subst.test \ subst2.test \ substref.test \ +substre2.test \ substtarg.test \ suffix.test \ suffix2.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index df3c4a15f..955568d13 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -559,6 +559,7 @@ subpkg2.test \ subst.test \ subst2.test \ substref.test \ +substre2.test \ substtarg.test \ suffix.test \ suffix2.test \ diff --git a/tests/substre2.test b/tests/substre2.test new file mode 100755 index 000000000..e67b73621 --- /dev/null +++ b/tests/substre2.test @@ -0,0 +1,55 @@ +#! /bin/sh +# Copyright (C) 2003 Free Software Foundation, Inc. +# +# This file is part of GNU Automake. +# +# GNU Automake is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# GNU Automake is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Automake; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# Test for bug in variable substitution references, where +# undefined variables break later substitutions. + +required=gcc +. ./defs || exit 1 + +set -e + +cat >> configure.in << 'END' +AC_PROG_CC +AC_OUTPUT +END + +cat > Makefile.am << 'END' + +foo = foo.a foo.b $(doesnt_exist) +bar = bar.a bar.b +var1 = $(foo:.a=1.c) $(doesnt_exist:.b=2.c) $(bar:.a=3.c) +var2 = $(var1:.b=4.c) + +bin_PROGRAMS = foo +foo_SOURCES = $(var2) + +OBJEXT = obj +echorule: + @echo BEG: $(foo_OBJECTS) :END +END + +$ACLOCAL +$AUTOCONF +$AUTOMAKE -a +./configure +$MAKE echorule >output +cat output +grep 'BEG: foo1.obj foo4.obj bar3.obj bar4.obj :END' output