From 50ea866e4c657da00ad03aaa6f2eb492978bf00e Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Thu, 17 Dec 2015 09:06:53 +0000 Subject: [PATCH] Fix build breakage on Unix. Occurred as a side effect of commit 198bca233, in which I wrote a Perl loop of the form 'foreach $srcdir (@srcdirs)' inside which I modified $srcdir - forgetting the Perl gotcha that if you do that, $srcdir temporarily aliases the actual array element, so you end up modifying the array you iterated over. Hence, a set of transformations intended to convert the source directory list into a special form for the nmake batch-mode inference rule syntax in particular ended up back in @srcdirs to be reflected in unrelated makefiles output later in the run. --- mkfiles.pl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mkfiles.pl b/mkfiles.pl index 3ce0e24d..51fa6c18 100755 --- a/mkfiles.pl +++ b/mkfiles.pl @@ -677,12 +677,13 @@ if (defined $makefiles{'vc'}) { } } print "\n"; - foreach $srcdir ("", @srcdirs) { + foreach $real_srcdir ("", @srcdirs) { + $srcdir = $real_srcdir; if ($srcdir ne "") { $srcdir =~ s!/!\\!g; $srcdir = $dirpfx . $srcdir; $srcdir =~ s!\\\.\\!\\!; - $srcdir = "{$srcdir}" + $srcdir = "{$srcdir}"; } # The double colon at the end of the line makes this a # 'batch-mode inference rule', which means that nmake will