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;
}