From: Steve Hancock Date: Sat, 19 Oct 2024 00:13:16 +0000 (-0700) Subject: add some loop safety checks X-Git-Tag: 20240903.05~22 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=6955b329a0a2c45a8c1a3f243f555ae794d984c8;p=perltidy.git add some loop safety checks --- diff --git a/lib/Perl/Tidy/Formatter.pm b/lib/Perl/Tidy/Formatter.pm index 51d4b7ad..12b85079 100644 --- a/lib/Perl/Tidy/Formatter.pm +++ b/lib/Perl/Tidy/Formatter.pm @@ -1293,6 +1293,40 @@ sub check_token_array { } } } + + # Check the array $rK_next_seqno_by_K->[$KK] + my $Klimit = @{$rLL} - 1; + my $K_last_seqno; + my $rK_next_seqno_by_K = $self->[_rK_next_seqno_by_K_]; + foreach my $KK ( 0 .. $Klimit ) { + my $K_next_seqno = $rK_next_seqno_by_K->[$KK]; + if ( !defined($K_next_seqno) ) { $K_last_seqno = $KK; last } + if ( $K_next_seqno <= $KK || $K_next_seqno > $Klimit ) { + Fault(<[$K_next_seqno]->[_TYPE_SEQUENCE_] ) { + Fault(<[$KK]; + next if ( !defined($Ktest) ); + Fault(<odd field count is ok, 2=>want even count + + # Return: + # $number_of_fields = updated number of items per line + if ( $number_of_fields >= $odd_or_even * 2 && $formatted_lines > 0 ) { my $min_fields = $number_of_fields; + if ( $odd_or_even < 1 ) { + ## shouldn't happen + DEVEL_MODE && Fault("bad value for odd_or_even=$odd_or_even\n"); + return $number_of_fields; + } + while ($min_fields >= $odd_or_even && $min_fields * $formatted_lines >= $item_count ) {