Author: tilman
Date: Mon Apr 28 08:27:17 2025
New Revision: 1925300

URL: http://svn.apache.org/viewvc?rev=1925300&view=rev
Log:
PDFBOX-5996: Set size for ByteArrayOutputStreams, as suggested by Axel Howind

Modified:
    
pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/TTFSubsetter.java
    
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSString.java
    
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java
    
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/CCITTFactory.java
    
pdfbox/branches/2.0/tools/src/main/java/org/apache/pdfbox/tools/imageio/ImageIOUtil.java

Modified: 
pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/TTFSubsetter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/TTFSubsetter.java?rev=1925300&r1=1925299&r2=1925300&view=diff
==============================================================================
--- 
pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/TTFSubsetter.java
 (original)
+++ 
pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/TTFSubsetter.java
 Mon Apr 28 08:27:17 2025
@@ -227,7 +227,7 @@ public final class TTFSubsetter
 
     private byte[] buildHeadTable() throws IOException
     {
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        ByteArrayOutputStream bos = new ByteArrayOutputStream(54);
         DataOutputStream out = new DataOutputStream(bos);
 
         HeaderTable h = ttf.getHeader();
@@ -256,7 +256,7 @@ public final class TTFSubsetter
 
     private byte[] buildHheaTable() throws IOException
     {
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        ByteArrayOutputStream bos = new ByteArrayOutputStream(36);
         DataOutputStream out = new DataOutputStream(bos);
 
         HorizontalHeaderTable h = ttf.getHorizontalHeader();
@@ -300,7 +300,7 @@ public final class TTFSubsetter
 
     private byte[] buildNameTable() throws IOException
     {
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        ByteArrayOutputStream bos = new ByteArrayOutputStream(512);
         DataOutputStream out = new DataOutputStream(bos);
 
         NamingTable name = ttf.getNaming();
@@ -396,7 +396,7 @@ public final class TTFSubsetter
 
     private byte[] buildMaxpTable() throws IOException
     {
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        ByteArrayOutputStream bos = new ByteArrayOutputStream(32);
         DataOutputStream out = new DataOutputStream(bos);
 
         MaximumProfileTable p = ttf.getMaximumProfile();
@@ -430,7 +430,7 @@ public final class TTFSubsetter
             return null;
         }
 
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        ByteArrayOutputStream bos = new ByteArrayOutputStream(78);
         DataOutputStream out = new DataOutputStream(bos);
 
         writeUint16(out, os2.getVersion());
@@ -478,7 +478,7 @@ public final class TTFSubsetter
     // never returns null
     private byte[] buildLocaTable(long[] newOffsets) throws IOException
     {
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        ByteArrayOutputStream bos = new 
ByteArrayOutputStream(newOffsets.length * 4);
         DataOutputStream out = new DataOutputStream(bos);
 
         for (long offset : newOffsets)
@@ -585,7 +585,7 @@ public final class TTFSubsetter
     // never returns null
     private byte[] buildGlyfTable(long[] newOffsets) throws IOException
     {
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        ByteArrayOutputStream bos = new ByteArrayOutputStream(512);
 
         GlyphTable g = ttf.getGlyph();
         long[] offsets = ttf.getIndexToLocation().getOffsets();
@@ -723,7 +723,7 @@ public final class TTFSubsetter
             return null;
         }
 
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        ByteArrayOutputStream bos = new ByteArrayOutputStream(64);
         DataOutputStream out = new DataOutputStream(bos);
 
         // cmap header
@@ -843,7 +843,7 @@ public final class TTFSubsetter
             return null;
         }
 
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        ByteArrayOutputStream bos = new ByteArrayOutputStream(64);
         DataOutputStream out = new DataOutputStream(bos);
 
         writeFixed(out, 2.0); // version

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSString.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSString.java?rev=1925300&r1=1925299&r2=1925300&view=diff
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSString.java 
(original)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSString.java 
Mon Apr 28 08:27:17 2025
@@ -108,7 +108,6 @@ public final class COSString extends COS
      */
     public static COSString parseHex(String hex) throws IOException
     {
-        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
         StringBuilder hexBuffer = new StringBuilder(hex.trim());
 
         // if odd number then the last hex digit is assumed to be 0
@@ -118,6 +117,7 @@ public final class COSString extends COS
         }
 
         int length = hexBuffer.length();
+        ByteArrayOutputStream bytes = new ByteArrayOutputStream((length + 1) / 
2);
         for (int i = 0; i < length; i += 2)
         {
             try

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java?rev=1925300&r1=1925299&r2=1925300&view=diff
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java
 (original)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java
 Mon Apr 28 08:27:17 2025
@@ -328,7 +328,7 @@ public abstract class PDFont implements
      */
     public final byte[] encode(String text) throws IOException
     {
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        ByteArrayOutputStream out = new ByteArrayOutputStream(Math.max(32, 
text.length()));
         int offset = 0;
         while (offset < text.length())
         {

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/CCITTFactory.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/CCITTFactory.java?rev=1925300&r1=1925299&r2=1925300&view=diff
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/CCITTFactory.java
 (original)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/CCITTFactory.java
 Mon Apr 28 08:27:17 2025
@@ -68,7 +68,7 @@ public final class CCITTFactory
         int height = image.getHeight();
         int width = image.getWidth();
 
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        ByteArrayOutputStream bos = new ByteArrayOutputStream(Math.max(32, 
(width + 1) * height));
         MemoryCacheImageOutputStream mcios = new 
MemoryCacheImageOutputStream(bos);
 
         for (int y = 0; y < height; ++y)

Modified: 
pdfbox/branches/2.0/tools/src/main/java/org/apache/pdfbox/tools/imageio/ImageIOUtil.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/2.0/tools/src/main/java/org/apache/pdfbox/tools/imageio/ImageIOUtil.java?rev=1925300&r1=1925299&r2=1925300&view=diff
==============================================================================
--- 
pdfbox/branches/2.0/tools/src/main/java/org/apache/pdfbox/tools/imageio/ImageIOUtil.java
 (original)
+++ 
pdfbox/branches/2.0/tools/src/main/java/org/apache/pdfbox/tools/imageio/ImageIOUtil.java
 Mon Apr 28 08:27:17 2025
@@ -388,7 +388,7 @@ public final class ImageIOUtil
     {
         byte[] data = profile.getData();
 
-        ByteArrayOutputStream deflated = new ByteArrayOutputStream();
+        ByteArrayOutputStream deflated = new 
ByteArrayOutputStream(Math.max(32, 2 * data.length));
         DeflaterOutputStream deflater = new DeflaterOutputStream(deflated);
         deflater.write(data);
         deflater.close();


Reply via email to