From e4d5d434247b720a3f78e1f7279168b5e6bf628e Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 29 Aug 2011 16:20:19 +0000 Subject: Save strings we're expanding in case an embedded eval causes them to be freed (if they're the value of a variable that's reset for example). See Savannah patch #7534 --- tests/scripts/features/varnesting | 47 ++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 23 deletions(-) (limited to 'tests/scripts/features/varnesting') diff --git a/tests/scripts/features/varnesting b/tests/scripts/features/varnesting index 15d5071..d8f3ffb 100644 --- a/tests/scripts/features/varnesting +++ b/tests/scripts/features/varnesting @@ -1,29 +1,30 @@ -$description = "The following test creates a makefile to ..."; +# -*-perl-*- +$description = "Test recursive variables"; $details = ""; -open(MAKEFILE,"> $makefile"); - -# The Contents of the MAKEFILE ... - -print MAKEFILE "x = variable1\n" - ."variable2 := Hello\n" - ."y = \$(subst 1,2,\$(x))\n" - ."z = y\n" - ."a := \$(\$(\$(z)))\n" - ."all: \n" - ."\t\@echo \$(a)\n"; - -# END of Contents of MAKEFILE - -close(MAKEFILE); - -&run_make_with_options($makefile,"",&get_logfile); - -# Create the answer to what should be produced by this Makefile -$answer = "Hello\n"; - -&compare_output($answer,&get_logfile(1)); +run_make_test(' +x = variable1 +variable2 := Hello +y = $(subst 1,2,$(x)) +z = y +a := $($($(z))) +all: + @echo $(a) +', + '', "Hello\n"); + +# This tests resetting the value of a variable while expanding it. +# You may only see problems with this if you're using valgrind or +# some other memory checker that poisons freed memory. +# See Savannah patch #7534 + +run_make_test(' +VARIABLE = $(eval VARIABLE := echo hi)$(VARIABLE) +wololo: + @$(VARIABLE) +', + '', "hi\n"); 1; -- cgit v1.2.3