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