Endlosschleife im PDF-Tabellenmodul und damit im PDF-Export gefixt
authorSven Schöling <s.schoeling@linet-services.de>
Thu, 25 Feb 2016 14:51:05 +0000 (15:51 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 3 Apr 2019 13:50:00 +0000 (15:50 +0200)
Wenn die Tabelle zu breit wird und dann irgendwann nicht einmal mehr ein
Wort in eine Zeile passt, dann muss das Wort trotzdem gesetzt werden;
andernfalls würde das PDF::Table-Modul in einer Endlosschleife enden.

Fix für Bug 863.

Reimplementiert commit 23223ef4302931a6a141c659bfda7ef6c7546b77

modules/override/PDF/Table.pm

index 990a2c6..5737248 100755 (executable)
@@ -211,8 +211,12 @@ sub text_block
         }
 
         # Lets take from paragraph as many words as we can put into $width - $indent;
-        while ( @paragraph and $text_object->advancewidth( join("\x20", @line)."\x20" . $paragraph[0]) +
-                                $line_width < $width )
+        # Always take at least one word; otherwise we'd end up in an infinite loop.
+        while ( !scalar(@line) || (
+          @paragraph && (
+            $text_object->advancewidth( join("\x20", @line)."\x20" . $paragraph[0]) + $line_width < $width
+          )
+        ))
         {
             push(@line, shift(@paragraph));
         }