-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

On 2011-01-07 04:38, Russ Allbery wrote:
> Niels Thykier <ni...@thykier.net> writes:
>> [...]
>> My current effort in the infra-513663 branch has been to encapsulate
>> packages inside the lab and reduce the complexity of the "PACKAGE: foreach".
>>   I intend to let these Lab::Package instances take care of the
>> book-keeping inside its defined little space; my next goal is probably
>> to make collection book-keeping go in there as well (that is creation
>> and removal of the ".<script>-<version>" files).
>>   I think once that is done the "PACKAGE: foreach" will be much simpler
>> (at least a lot shorter).
> 
> Excellent!
> 

Alright, I need a second pair of eyes here.  In frontend/lintian there
is a piece of code[1].  This is about line 880ish in the infra-513663
branch.

I am almost certain there is something fishy going on within the if
body.  With a bit of "printf"-debugging I have concluded that $checks in
"if ($check_tags) {" part is A) a scalar and B) undefined yet it is
happily used as a hash!
  The else-part looks just as fishy!  It split $checks on /,/ (so it is
used as a scalar again), yet it also happily uses $checks as a hash just
a bit further down.

I am guessing that these $checks{...} maps should have been replaced by
(something like) $check_info{...}->{'requested-tags'}.  But I would like
this confirmed.

~Niels

[1]

# {{{ determine which checks have been requested
if ($action eq 'check') {
    if ($check_tags) {
        foreach my $t (split(/,/, $check_tags)) {
            my $info = Lintian::Tag::Info->new($t);
            fail("unknown tag specified: $t") unless defined($info);
            my $script = $info->script;
            next if $script eq 'lintian';
            if ($check_info{$script}) {
                $checks{$script} = 1;
            } else {
                # should never happen
                fail("no info for script $script");
            }
        }
    } else {
        my %dont_check = map { $_ => 1 } (split m/,/, ...);
        $checks or ($checks = join(',',keys %check_info));
        for my $c (split(/,/,$checks)) {
            if ($check_info{$c}) {
                if ($dont_check{$c}
                    || ($check_info{$c}->{'abbrev'}
                        && $dont_check{$check_info{$c}->{'abbrev'}})) {
                    #user requested not to run this check
                } elsif ($check_info{$c}->{'requested-tags'} == 0) {
                    #no need to run this check, no tags will be issued
                } else {
                    $checks{$c} = 1;
                }
            } elsif (exists $check_abbrev{$c}) {
                #abbrevs only used when -C is given, ....
                $checks{$check_abbrev{$c}} = 1;
            } else {
                fail("unknown check specified: $c");
            }
        }
    }
    ...
}

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBCAAGBQJNKta8AAoJEAVLu599gGRCqa8P/RLg3PdQaxCuL2V2NZFXuMkn
ZNQOm8Tf3gm7bJKO3d3dK2cG6683TqODje6pxlOW1kieNLDCLC6T+qDJLxv2TRfT
JxcoJGhd/bMOEwKOFWsohy2rjPYEGupuabRLmU/PXkYwZgJmowM4GJZrBDeBRJZT
dJkur4BcEtY8wvUbUuroWk0t3KtkjPPMG7heonoqpan0/VG8/i9X0x8MfwMKQOqn
DikcsBPYWWjlqvKveTuc5I64G6pA8n4o+p7s+JvaoQOnP4Ak2DYMGg1jO3I5RunK
8PeuiHNM8eaEhQ0t1/4N6Rhfh41VVOrX+8AVaLiv3NwXdg/yukcfKb4Z9lH3lJs+
KGEOZyNMdWQfGRBX+NVvkQtkoQKtjjQFGcIuMitfxdsQ5f4oRSSpw2t/dmd/22e/
LLfBoXITmQmNq8mwaxHXf2qBYQfsLoncsYU9/V+BHf1op7gU0F2uhr9lrEQTOQB/
r32Qo4lUimB3PePc8KY4zQ9CAYQwvbfcwwyfrMiH0Z4qvCUTYdPl+JsVySLq8XSP
SF4wcoWxaiCmwICg6U5NBy8mzFpOdZbZ8Yy5kpLVsHxNIv2POMzV1YkkSGfzH65r
87gxbio0dA6UQ042tOn6/iXwhVVV+hhq9Lo52ccc7vslMJqtuqnZv9bfS0hfq5ds
hI0hecQf/2Fq6LuBNee8
=zZkG
-----END PGP SIGNATURE-----


-- 
To UNSUBSCRIBE, email to debian-lint-maint-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4d2ad6bd.7060...@thykier.net

Reply via email to