leakfinder.pl: More exceptions
authorFather Chrysostomos <sprout@cpan.org>
Thu, 15 Nov 2012 23:55:50 +0000 (15:55 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Fri, 16 Nov 2012 00:11:01 +0000 (16:11 -0800)
Porting/leakfinder.pl

index 423e4ee..a0b5457 100644 (file)
@@ -22,8 +22,9 @@ for(`find .`) {
  for(`cat \Q$_\E 2>/dev/null`) {
     next if exists $exceptions{s/^\s+//r};
     next if /rm -rf/; # Could be an example from perlsec, e.g.
-    next if /END\s*\{/; # Creating an END block creates SVs, obviously
-    next if /^\s*(?:push|unshift|(?:\@r = )?splice)/;
+     # Creating one of these special blocks creates SVs, obviously
+    next if /(?:END|CHECK|INIT)\s*\{/;
+    next if /^\s*(?:push|unshift|(?:\@r = )?splice|binmode|sleep)/;
     next if /\bselect(?:\s*\()[^()]+,/; # 4-arg select hangs
     my $q = s/[\\']/sprintf "\\%02x", ord $&/gore
          =~ s/\0/'."\\0".'/grid;
@@ -55,16 +56,20 @@ $a{buttons}[2*$a{default_button}] = [$a{buttons}[2*$a{default_button}]];
 $aliases{$code_point} = [ $aliases{$code_point} ];
 $aliases_maps->[$i] = [ $aliases_maps->[$i] ]
 $allow ? $hash{$acc} = $allow : push @list, $acc;
+A rare race condition that would lead to L<sleep|perlfunc/sleep> taking more
 $args{include_dirs} = [ $args{include_dirs} ] 
 $ARRAY[++$#ARRAY] = $value;
+@a = sort ($b, @a)
 $a = {x => $a};
 BEGIN { unshift(@INC, "./blib") }
-BEGIN { unshift(\@INC, LIST) }
+BEGIN { unshift @INC, "lib" }
+BEGIN { unshift(@INC, LIST) }
 binmode *STDERR, ":encoding(utf8)";
 binmode *STDOUT, ":encoding(utf8)";
 $char++ while substr( $got, $char, 1 ) eq substr( $wanted, $char, 1 );
 CHECK { $main::phase++ }
 $config{$k} = [ $config{$k} ]
+const char *file = __FILE__;
 const char* file = __FILE__;
 $data = [ $data ];
 do { $tainted_value = shift @ENV_values  } while(!$tainted_value || ref $tainted_value);
@@ -72,8 +77,11 @@ do {$x[$x] = $x;} while ($x++) < 10;
 eval 'v23: $counter++; goto v23 unless $counter == 2';
 eval 'v23 : $counter++; goto v23 unless $counter == 2';
 $formdata->{$key} = [ $formdata->{$key}, $value ];
+$func = $next{$func} until $pod{$func};
 $got_arrayref ? unshift(@{$args[0]}, $cmd) : unshift(@args, $cmd);
+$h{ []} = 123;
 { $h[++$i] = $_ }
+High resolution alarm, sleep, gettimeofday, interval timers
 $i = int($i/2) until defined $self->[$i/2];
 $invmap_ref->[$i] = [ $invmap_ref->[$i] ];
 $i++ while $self->{ids}{"$t$i"}++;
@@ -95,6 +103,7 @@ $pa = { -exitval => $pa };
 $pa = { -message => $pa };
 pop @lines while $lines[-1] eq "";
 pop @to while $#to and $to[$#to] == $to[$#to -1];
+print "LA LA LA\n" while 1;          # loops forever
 prog => 'use Config; CHECK { $Config{awk} }',
 $p->{share_dir} = { dist => [ $p->{share_dir} ] };
 $p->{share_dir} = { dist => $p->{share_dir} };
@@ -105,13 +114,11 @@ $p->{share_dir} = { dist => $p->{share_dir} };
 $resp = [$resp]
 $self->{DIR} = [grep $_, split ":", $self->{DIR}];
 $share_dir->{dist} = [ $share_dir->{dist} ];
-sleep;
-sleep(300);
-sleep($waitfor - 2);    # Workaround for perlbug #49073
 s![^/+]*$!man!&&-d&&!$s{$_}++&&push@m,#_;END{print"@m"}'
 $spec = [$spec, $_[0]];
 $stack[$i++] &= ~1;
 $step = [$step];
+system("find . -type f -print     | xargs chmod 0444");
 the while clause.  */
 Time::HiRes - High resolution alarm, sleep, gettimeofday, interval timers
 *tmpl = ~*tmpl;
@@ -120,6 +127,7 @@ weaken($objs[@objs] = $h{$_} = []);
 weaken($objs[@objs] = $$h{$_} = []);
 while (1) { my $k; }
 while(1) { sleep(1); }
+while($foo--) { print("In thread $thread\n"); }
 $x->[$j] -= $BASE if $car = (($x->[$j] += $car) >= $BASE) ? 1 : 0; $j++;
 $x->[scalar @$x] = 0;          # avoid || 0 test inside loop
 $z = splice @a, 3, 1, "recordZ";