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)
committerSven Schöling <s.schoeling@linet-services.de>
Thu, 25 Feb 2016 17:38:19 +0000 (18:38 +0100)
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 0316e2a..95efebc 100644 (file)
@@ -206,8 +206,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));
         }