[tor-commits] [rbm/master] Bug 33289: Optimize the get_target function

gk at torproject.org gk at torproject.org
Fri Sep 11 10:29:07 UTC 2020


commit dab4ae35aeb84ae5273a30f1fbcdcb6b6530f8ad
Author: Nicolas Vigier <boklm at torproject.org>
Date:   Thu Sep 10 13:11:28 2020 +0200

    Bug 33289: Optimize the get_target function
    
    We also change the behavior of the function: we stop looking after the
    first definition of a target. This means for example that if a target is
    defined as an array in rbm.conf, and also defined as a hash in the
    project's config, then the definition from rbm.conf will be ignored.
---
 lib/RBM.pm | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/lib/RBM.pm b/lib/RBM.pm
index b9ad1ad..c4d5a82 100644
--- a/lib/RBM.pm
+++ b/lib/RBM.pm
@@ -102,21 +102,17 @@ sub as_array {
 
 sub get_target {
     my ($project, $options, $paths, $target) = @_;
-    my @res;
     foreach my $path (@$paths) {
         foreach my $step ([ 'steps', $config->{step} ], []) {
             my $z = config_p($config, $project, $options, @$path, @$step,
                              'targets', $target);
             next unless $z;
-            if (ref $z eq 'HASH') {
-                push @res, $target unless grep { $_ eq $target } @res;
-                next;
-            }
+            return [ $target ] if ref $z eq 'HASH';
             my @z = ref $z eq 'ARRAY' ? (@{$z}) : ($z);
-            push @res, map { @{get_target($project, $options, $paths, $_)} } @z;
+            return [ map { @{get_target($project, $options, $paths, $_)} } @z ];
         }
     }
-    return \@res;
+    return [];
 }
 
 sub get_targets {



More information about the tor-commits mailing list