Be careful when shifting in a function argument, you end up changing
the caller's value. Instead, when it is an array, make a shallow copy
and shift in that instead.
Reviewed-by: Rich Salz <rsalz@openssl.org>
my $num = shift;
my $path_builder = shift;
- my $cmd = __fixup_cmd($path_builder->(shift @{$_[0]}));
- my @args = @{$_[0]}; shift;
+ # Make a copy to not destroy the caller's array
+ my @cmdarray = ( @{$_[0]} ); shift;
+ my $cmd = __fixup_cmd($path_builder->(shift @cmdarray));
+ my @args = @cmdarray;
my %opts = @_;
return () if !$cmd;