[tor-commits] [rbm/master] Avoid modifying $input_files
boklm at torproject.org
boklm at torproject.org
Thu Apr 27 10:44:17 UTC 2017
commit 106e9b05aeff6309e241a3c9bae1781e0d551e7a
Author: Nicolas Vigier <boklm at torproject.org>
Date: Thu Apr 27 12:30:25 2017 +0200
Avoid modifying $input_files
If an input_file contains a 'target' value we process it as a template
and modify it. However we should not do that as a project (and its
input files) can be used multiple times with different contexts in the
same build. Instead we should make a copy of the $input_file before we
modify it.
---
lib/RBM.pm | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/lib/RBM.pm b/lib/RBM.pm
index 50332d7..6825050 100644
--- a/lib/RBM.pm
+++ b/lib/RBM.pm
@@ -751,7 +751,8 @@ sub input_files {
my $src_dir = "$proj_dir/$project";
my $old_cwd = getcwd;
chdir $src_dir || exit_error "cannot chdir to $src_dir";
- foreach my $input_file (@$input_files) {
+ foreach my $input_file_alias (@$input_files) {
+ my $input_file = $input_file_alias;
if (!ref $input_file) {
$input_file = project_config($project,
process_template_opt($project, $input_file, $options), $options);
@@ -765,10 +766,10 @@ sub input_files {
if ($input_file->{enable} && !$t->('enable')) {
next;
}
- if ($input_file->{target} && ! $input_file->{_target_processed}) {
+ if ($input_file->{target}) {
+ $input_file = { %$input_file };
$input_file->{target} = process_template_opt($project,
$input_file->{target}, $options);
- $input_file->{_target_processed} = 1;
}
if ($action eq 'getfnames') {
my $getfnames_name;
More information about the tor-commits
mailing list