You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2015/09/02 22:32:58 UTC

svn commit: r1700894 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding: DictionaryEncoding.java Encoding.java

Author: jahewson
Date: Wed Sep  2 20:32:58 2015
New Revision: 1700894

URL: http://svn.apache.org/r1700894
Log:
PDFBOX-2951: Fix issue with Encoding caching names before Differences have been applied

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/DictionaryEncoding.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/DictionaryEncoding.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/DictionaryEncoding.java?rev=1700894&r1=1700893&r2=1700894&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/DictionaryEncoding.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/DictionaryEncoding.java Wed Sep  2 20:32:58 2015
@@ -60,7 +60,6 @@ public class DictionaryEncoding extends
         }
         
         codeToName.putAll( this.baseEncoding.codeToName );
-        names.addAll( this.baseEncoding.names );
         applyDifferences();
     }
 
@@ -118,7 +117,6 @@ public class DictionaryEncoding extends
         baseEncoding = base;
 
         codeToName.putAll( baseEncoding.codeToName );
-        names.addAll( baseEncoding.names );
         applyDifferences();
     }
 

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java?rev=1700894&r1=1700893&r2=1700894&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java Wed Sep  2 20:32:58 2015
@@ -21,7 +21,6 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
-
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.common.COSObjectable;
 
@@ -59,7 +58,7 @@ public abstract class Encoding implement
     }
 
     protected final Map<Integer, String> codeToName = new HashMap<Integer, String>();
-    protected final Set<String> names = new HashSet<String>();
+    private Set<String> names;
 
     /**
      * Returns an unmodifiable view of the Code2Name mapping.
@@ -80,7 +79,6 @@ public abstract class Encoding implement
     protected void add(int code, String name)
     {
         codeToName.put(code, name);
-        names.add(name);
     }
 
     /**
@@ -90,6 +88,13 @@ public abstract class Encoding implement
      */
     public boolean contains(String name)
     {
+        // we have to wait until all add() calls are done before building the name cache
+        // otherwise /Differences won't be accounted for
+        if (names == null)
+        {
+            names = new HashSet<String>();
+            names.addAll(codeToName.values());
+        }
         return names.contains(name);
     }