You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2023/05/05 06:13:26 UTC
svn commit: r1909621 - in /pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf: RandomAccessReadDataStream.java TrueTypeFont.java
Author: lehmi
Date: Fri May 5 06:13:25 2023
New Revision: 1909621
URL: http://svn.apache.org/viewvc?rev=1909621&view=rev
Log:
PDFBOX-5594: remove the usage of RandomAccessReadBuffer from RandomAccessReadDataStream so that it is save to remove the finalize override from rueTypeFont
Modified:
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/RandomAccessReadDataStream.java
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TrueTypeFont.java
Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/RandomAccessReadDataStream.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/RandomAccessReadDataStream.java?rev=1909621&r1=1909620&r2=1909621&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/RandomAccessReadDataStream.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/RandomAccessReadDataStream.java Fri May 5 06:13:25 2023
@@ -22,7 +22,6 @@ import java.io.InputStream;
import org.apache.pdfbox.io.IOUtils;
import org.apache.pdfbox.io.RandomAccessRead;
-import org.apache.pdfbox.io.RandomAccessReadBuffer;
/**
* An implementation of the TTFDataStream using RandomAccessRead as source.
@@ -30,10 +29,10 @@ import org.apache.pdfbox.io.RandomAccess
*/
class RandomAccessReadDataStream extends TTFDataStream
{
- private final RandomAccessRead randomAccessRead;
private final long length;
private final byte[] data;
-
+ private int currentPosition = 0;
+
/**
* Constructor.
*
@@ -52,7 +51,6 @@ class RandomAccessReadDataStream extends
{
remainingBytes -= amountRead;
}
- this.randomAccessRead = new RandomAccessReadBuffer(data);
}
/**
@@ -66,7 +64,6 @@ class RandomAccessReadDataStream extends
{
data = IOUtils.toByteArray(inputStream);
length = data.length;
- this.randomAccessRead = new RandomAccessReadBuffer(data);
}
/**
@@ -77,7 +74,7 @@ class RandomAccessReadDataStream extends
@Override
public long getCurrentPosition() throws IOException
{
- return randomAccessRead.getPosition();
+ return currentPosition;
}
/**
@@ -88,7 +85,7 @@ class RandomAccessReadDataStream extends
@Override
public void close() throws IOException
{
- randomAccessRead.close();
+ // nothing to do
}
/**
@@ -99,7 +96,11 @@ class RandomAccessReadDataStream extends
@Override
public int read() throws IOException
{
- return randomAccessRead.read();
+ if (currentPosition >= length)
+ {
+ return -1;
+ }
+ return data[currentPosition++] & 0xff;
}
/**
@@ -137,7 +138,11 @@ class RandomAccessReadDataStream extends
@Override
public void seek(long pos) throws IOException
{
- randomAccessRead.seek(pos);
+ if (pos < 0)
+ {
+ throw new IOException("Invalid position " + pos);
+ }
+ currentPosition = pos < length ? (int) pos : (int) length;
}
/**
@@ -154,7 +159,15 @@ class RandomAccessReadDataStream extends
@Override
public int read(byte[] b, int off, int len) throws IOException
{
- return randomAccessRead.read(b, off, len);
+ if (currentPosition >= length)
+ {
+ return -1;
+ }
+ int remainingBytes = (int) (length - currentPosition);
+ int bytesToRead = Math.min(remainingBytes, len);
+ System.arraycopy(data, currentPosition, b, off, bytesToRead);
+ currentPosition += bytesToRead;
+ return bytesToRead;
}
/**
Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TrueTypeFont.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TrueTypeFont.java?rev=1909621&r1=1909620&r2=1909621&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TrueTypeFont.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TrueTypeFont.java Fri May 5 06:13:25 2023
@@ -71,14 +71,6 @@ public class TrueTypeFont implements Fon
data.close();
}
- @Override
- protected void finalize() throws Throwable
- {
- super.finalize();
- // PDFBOX-4963: risk of memory leaks due to SoftReference in FontCache
- close();
- }
-
/**
* @return Returns the version.
*/