You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2020/06/19 12:50:56 UTC

svn commit: r1878988 - in /pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf: BufferedRandomAccessFile.java TTFDataStream.java

Author: tilman
Date: Fri Jun 19 12:50:56 2020
New Revision: 1878988

URL: http://svn.apache.org/viewvc?rev=1878988&view=rev
Log:
PDFBOX-4890: read in 64K chunks to avoid too many recursive calls when reading huge .ttc files (workaround until better solution)

Modified:
    pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/BufferedRandomAccessFile.java
    pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFDataStream.java

Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/BufferedRandomAccessFile.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/BufferedRandomAccessFile.java?rev=1878988&r1=1878987&r2=1878988&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/BufferedRandomAccessFile.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/BufferedRandomAccessFile.java Fri Jun 19 12:50:56 2020
@@ -159,6 +159,7 @@ public class BufferedRandomAccessFile ex
         bufpos += leftover;
         if (fillBuffer() > 0)
         {
+            //TODO PDFBOX-4890 remove recursive call. When done, remove Math.min() in TTFDataStream.read()
             int bytesRead = read(b, off + leftover, len - leftover);
             if (bytesRead > 0)
             {

Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFDataStream.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFDataStream.java?rev=1878988&r1=1878987&r2=1878988&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFDataStream.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFDataStream.java Fri Jun 19 12:50:56 2020
@@ -251,7 +251,8 @@ abstract class TTFDataStream implements
         int totalAmountRead = 0;
         // read at most numberOfBytes bytes from the stream.
         while (totalAmountRead < numberOfBytes
-                && (amountRead = read(data, totalAmountRead, numberOfBytes - totalAmountRead)) != -1)
+               //TODO PDFBOX-4890: remove Math.min() after removing recursive call from BufferedRandomAccessFile.read
+                && (amountRead = read(data, totalAmountRead, Math.min(numberOfBytes - totalAmountRead, 65536))) != -1)
         {
             totalAmountRead += amountRead;
         }