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 2021/03/05 16:41:10 UTC
svn commit: r1887218 -
/pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/pfb/PfbParser.java
Author: tilman
Date: Fri Mar 5 16:41:09 2021
New Revision: 1887218
URL: http://svn.apache.org/viewvc?rev=1887218&view=rev
Log:
PDFBOX-4892: avoid memory leak, as suggested by valerybokov; remove unneeded assignment; fix javadoc; rename method
Modified:
pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/pfb/PfbParser.java
Modified: pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/pfb/PfbParser.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/pfb/PfbParser.java?rev=1887218&r1=1887217&r2=1887218&view=diff
==============================================================================
--- pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/pfb/PfbParser.java (original)
+++ pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/pfb/PfbParser.java Fri Mar 5 16:41:09 2021
@@ -34,7 +34,7 @@ import java.util.Arrays;
public class PfbParser
{
/**
- * the pdf header length.
+ * the pfb header length.
* (start-marker (1 byte), ascii-/binary-marker (1 byte), size (4 byte))
* 3*6 == 18
*/
@@ -88,7 +88,20 @@ public class PfbParser
*/
public PfbParser(final String filename) throws IOException
{
- this( new BufferedInputStream(new FileInputStream(filename),BUFFER_SIZE) );
+ BufferedInputStream in = null;
+ try
+ {
+ in = new BufferedInputStream(new FileInputStream(filename), BUFFER_SIZE);
+ byte[] pfb = readFully(in);
+ parsePfb(pfb);
+ }
+ finally
+ {
+ if (in != null)
+ {
+ in.close();
+ }
+ }
}
/**
@@ -98,7 +111,7 @@ public class PfbParser
*/
public PfbParser(final InputStream in) throws IOException
{
- byte[] pfb = readPfbInput(in);
+ byte[] pfb = readFully(in);
parsePfb(pfb);
}
@@ -165,17 +178,17 @@ public class PfbParser
}
/**
- * Read the pdf input.
+ * Read the pfb input.
* @param in The input.
- * @return Returns the pdf-array.
+ * @return Returns the pfb-array.
* @throws IOException if an IO-error occurs.
*/
- private byte[] readPfbInput(final InputStream in) throws IOException
+ private byte[] readFully(final InputStream in) throws IOException
{
// copy into an array
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] tmpbuf = new byte[BUFFER_SIZE];
- int amountRead = -1;
+ int amountRead;
while ((amountRead = in.read(tmpbuf)) != -1)
{
out.write(tmpbuf, 0, amountRead);