You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2021/10/21 10:08:35 UTC

svn commit: r1894438 - /poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hslf/record/FontEmbeddedData.java

Author: fanningpj
Date: Thu Oct 21 10:08:35 2021
New Revision: 1894438

URL: http://svn.apache.org/viewvc?rev=1894438&view=rev
Log:
[bug-65639] increase max size of HSLF font data and try to cache the FontHeader instance

Modified:
    poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hslf/record/FontEmbeddedData.java

Modified: poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hslf/record/FontEmbeddedData.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hslf/record/FontEmbeddedData.java?rev=1894438&r1=1894437&r2=1894438&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hslf/record/FontEmbeddedData.java (original)
+++ poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hslf/record/FontEmbeddedData.java Thu Oct 21 10:08:35 2021
@@ -31,8 +31,8 @@ import org.apache.poi.util.LittleEndian;
 
 @SuppressWarnings("WeakerAccess")
 public class FontEmbeddedData extends RecordAtom implements FontFacet {
-    //arbitrarily selected; may need to increase
-    private static final int MAX_RECORD_LENGTH = 1_000_000;
+    //arbitrarily selected; may need to increase (increased due to https://bz.apache.org/bugzilla/show_bug.cgi?id=65639)
+    private static final int MAX_RECORD_LENGTH = 5_000_000;
 
     /**
      * Record header.
@@ -45,6 +45,11 @@ public class FontEmbeddedData extends Re
     private byte[] _data;
 
     /**
+     * A cached FontHeader so that we don't keep creating new FontHeader instances
+     */
+    private FontHeader fontHeader;
+
+    /**
      * Constructs a brand new font embedded record.
      */
     /* package */ FontEmbeddedData() {
@@ -87,14 +92,18 @@ public class FontEmbeddedData extends Re
     }
 
     public void setFontData(byte[] fontData) {
+        fontHeader = null;
         _data = fontData.clone();
         LittleEndian.putInt(_header, 4, _data.length);
     }
 
     public FontHeader getFontHeader() {
-        FontHeader h = new FontHeader();
-        h.init(_data, 0, _data.length);
-        return h;
+        if (fontHeader == null) {
+            FontHeader h = new FontHeader();
+            h.init(_data, 0, _data.length);
+            fontHeader = h;
+        }
+        return fontHeader;
     }
 
     @Override



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org