]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Bugzilla #40387:
authorJeremias Maerki <jeremias@apache.org>
Mon, 13 Nov 2006 17:42:28 +0000 (17:42 +0000)
committerJeremias Maerki <jeremias@apache.org>
Mon, 13 Nov 2006 17:42:28 +0000 (17:42 +0000)
Dealing with IOExceptions for certain large PFM files in a more radical way: load everything into memory, since we basically need random access here. The biggest PFMs I've seen so far are around 20KB so this shouldn't be a big problem, especially as the memory is freed pretty quickly.

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@474410 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/fonts/type1/PFMFile.java

index 4a009ae3816ce262dd9e06bf4826b3c35d0e6ff9..b2d2ee9336d6f5e51a024cef60009b36ad60c9ad 100644 (file)
@@ -21,10 +21,12 @@ package org.apache.fop.fonts.type1;
 
 // Java
 import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Map;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -76,12 +78,11 @@ public class PFMFile {
      * @throws IOException In case of an I/O problem
      */
     public void load(InputStream inStream) throws IOException {
+        byte[] pfmBytes = IOUtils.toByteArray(inStream);
         InputStream bufin = inStream;
-        if (!bufin.markSupported()) {
-            bufin = new BufferedInputStream(bufin);
-        }
+        bufin = new ByteArrayInputStream(pfmBytes);
         PFMInputStream in = new PFMInputStream(bufin);
-        bufin.mark(16);
+        bufin.mark(512);
         short sh1 = in.readByte();
         short sh2 = in.readByte();
         if (sh1 == 128 && sh2 == 1) {