]> git.donarmstrong.com Git - perltidy.git/commitdiff
fixed potential index problem; added test case for hanging side comments
authorSteve Hancock <perltidy@users.sourceforge.net>
Tue, 26 May 2020 22:20:25 +0000 (15:20 -0700)
committerSteve Hancock <perltidy@users.sourceforge.net>
Tue, 26 May 2020 22:20:25 +0000 (15:20 -0700)
lib/Perl/Tidy/VerticalAligner.pm
t/snippets/expect/hanging_side_comments3.def [new file with mode: 0644]
t/snippets/hanging_side_comments3.in [new file with mode: 0644]
t/snippets/kpit.in
t/snippets/packing_list.txt
t/snippets/rperl.par
t/snippets17.t
t/snippets20.t

index df7f7a6b6541ff4fe7a8ea67d7aa8bf7c400601d..87d9e11af51da31a76a34753d4ab8ce0ca938b9d 100644 (file)
@@ -2627,6 +2627,7 @@ sub delete_unmatched_tokens {
     my @min_levels;
 
     my $jmax = @{$rnew_lines} - 1;
+    return unless $jmax >= 0;
 
     my %is_good_tok;
 
diff --git a/t/snippets/expect/hanging_side_comments3.def b/t/snippets/expect/hanging_side_comments3.def
new file mode 100644 (file)
index 0000000..e0d9529
--- /dev/null
@@ -0,0 +1,12 @@
+    if ( $var eq 'wastebasket' ) {    # this sends a pure block
+                                      # of hanging side comments
+                                      #to the vertical aligner.
+                                      #It caused a crash in
+                                      #a test version of
+                                      #sub 'delete_unmatched_tokens'
+                                      #...
+                                      #}
+    }
+    elsif ( $var eq 'spacecommand' ) {
+        &die("No $val function") unless eval "defined &$val";
+    }
diff --git a/t/snippets/hanging_side_comments3.in b/t/snippets/hanging_side_comments3.in
new file mode 100644 (file)
index 0000000..e0d9529
--- /dev/null
@@ -0,0 +1,12 @@
+    if ( $var eq 'wastebasket' ) {    # this sends a pure block
+                                      # of hanging side comments
+                                      #to the vertical aligner.
+                                      #It caused a crash in
+                                      #a test version of
+                                      #sub 'delete_unmatched_tokens'
+                                      #...
+                                      #}
+    }
+    elsif ( $var eq 'spacecommand' ) {
+        &die("No $val function") unless eval "defined &$val";
+    }
index 001886f440656261357aab26b6177af45e2aaa91..5c640af3cb8c02d665b6446f41b101c782d4f377 100644 (file)
@@ -1 +1 @@
-if ( seek( DATA, 0, 0 ) ) { ... } 
+if ( seek(DATA, 0, 0) ) { ... }
index 05dddc9ea11676f26ce0d6be9f7a2d53143c0510..6b456710d8ebf12dd08a03f9689784adb8158803 100644 (file)
 ../snippets20.t        git25.def
 ../snippets20.t        git25.git25
 ../snippets20.t        outdent.outdent2
+../snippets20.t        kpit.def
+../snippets20.t        kpit.kpit
+../snippets20.t        kpitl.def
+../snippets20.t        kpitl.kpitl
 ../snippets3.t ce_wn1.ce_wn
 ../snippets3.t ce_wn1.def
 ../snippets3.t colin.colin
 ../snippets9.t rt98902.def
 ../snippets9.t rt98902.rt98902
 ../snippets9.t rt99961.def
-../snippets20.t        kpit.def
-../snippets20.t        kpit.kpit
-../snippets20.t        kpitl.def
-../snippets20.t        kpitl.kpitl
+../snippets20.t        hanging_side_comments3.def
index 7e615cc5094f5b710e1f414218897d8e7764d9b7..fdd4c69ef4d9230fd1dc08866ddfdb999d1169e9 100644 (file)
@@ -1 +1 @@
--l=0
+-pbp  -nst --ignore-side-comment-lengths  --converge  -l=0  -q
index 7d973fd2812e8bc26e251647d49744a7ca7ce1e2..779b6fb1b5df32a6e67a32e40141724bee6c59f7 100644 (file)
@@ -65,8 +65,9 @@ BEGIN {
         'def'       => "",
         'long_line' => "-l=0",
         'pbp'       => "-pbp -nst -nse",
-        'rperl'     => "-l=0",
-        'rt132059'  => "-dac",
+        'rperl' =>
+          "-pbp  -nst --ignore-side-comment-lengths  --converge  -l=0  -q",
+        'rt132059' => "-dac",
     };
 
     ############################
index fbead06517675a8a4b3adc364be94c0672adae07..fe88ed0afdabe35b90f5bb1b84317824ccd37e83 100644 (file)
@@ -18,6 +18,7 @@
 #15 kpit.kpit
 #16 kpitl.def
 #17 kpitl.kpitl
+#18 hanging_side_comments3.def
 
 # To locate test #13 you can search for its name or the string '#13'
 
@@ -114,10 +115,25 @@ my $mapping = [
         'foo10' => undef,
     };
 
+----------
+
+        'hanging_side_comments3' => <<'----------',
+    if ( $var eq 'wastebasket' ) {    # this sends a pure block
+                                      # of hanging side comments
+                                      #to the vertical aligner.
+                                      #It caused a crash in
+                                      #a test version of
+                                      #sub 'delete_unmatched_tokens'
+                                      #...
+                                      #}
+    }
+    elsif ( $var eq 'spacecommand' ) {
+        &die("No $val function") unless eval "defined &$val";
+    }
 ----------
 
         'kpit' => <<'----------',
-if ( seek( DATA, 0, 0 ) ) { ... } 
+if ( seek(DATA, 0, 0) ) { ... }
 ----------
 
         'kpitl' => <<'----------',
@@ -523,6 +539,25 @@ return ( $r**$n ) *
       (4**(int($n / 2) + 1)));
 #17...........
         },
+
+        'hanging_side_comments3.def' => {
+            source => "hanging_side_comments3",
+            params => "def",
+            expect => <<'#18...........',
+    if ( $var eq 'wastebasket' ) {    # this sends a pure block
+                                      # of hanging side comments
+                                      #to the vertical aligner.
+                                      #It caused a crash in
+                                      #a test version of
+                                      #sub 'delete_unmatched_tokens'
+                                      #...
+                                      #}
+    }
+    elsif ( $var eq 'spacecommand' ) {
+        &die("No $val function") unless eval "defined &$val";
+    }
+#18...........
+        },
     };
 
     my $ntests = 0 + keys %{$rtests};