]> source.dussan.org Git - poi.git/commitdiff
Simplify initialization of HWPF EscherRecordHolder
authorMarius Volkhart <mariusvolkhart@apache.org>
Sun, 28 Feb 2021 16:47:43 +0000 (16:47 +0000)
committerMarius Volkhart <mariusvolkhart@apache.org>
Sun, 28 Feb 2021 16:47:43 +0000 (16:47 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886999 13f79535-47bb-0310-9956-ffa450edef68

src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java
src/scratchpad/src/org/apache/poi/hwpf/model/EscherRecordHolder.java

index 3bd96bf2064d98f8c8bfbdede8cf129a9394d481..3e1de7c0a74c2bf9522be66bbc763899fe4f6be2 100644 (file)
@@ -309,11 +309,7 @@ public final class HWPFDocument extends HWPFDocumentCore {
                 FSPADocumentPart.HEADER);
         _fspaMain = new FSPATable(_tableStream, _fib, FSPADocumentPart.MAIN);
 
-        if (_fib.getFcDggInfo() != 0) {
-            _escherRecordHolder = new EscherRecordHolder(_tableStream, _fib.getFcDggInfo(), _fib.getLcbDggInfo());
-        } else {
-            _escherRecordHolder = new EscherRecordHolder();
-        }
+        _escherRecordHolder = new EscherRecordHolder(_tableStream, _fib.getFcDggInfo(), _fib.getLcbDggInfo());
 
         // read in the pictures stream
         _pictures = new PicturesTable(this, _dataStream, _mainStream, _fspaMain, _escherRecordHolder);
index df62b420ad8c7d89e1968dfb3a4e681ca85b5fac..ccc0a7e42cd6151a1910c801090daa757bf34de5 100644 (file)
@@ -34,19 +34,23 @@ import org.apache.poi.util.Internal;
  */
 @Internal
 public final class EscherRecordHolder {
-       private final ArrayList<EscherRecord> escherRecords;
-
-       public EscherRecordHolder() {
-               escherRecords = new ArrayList<>();
-       }
+       private final ArrayList<EscherRecord> escherRecords = new ArrayList<>();
 
        public EscherRecordHolder(byte[] data, int offset, int size) {
-               this();
                fillEscherRecords(data, offset, size);
        }
 
+       /**
+        * Parses the records out of the given data.
+        *
+        * The thing to be aware of here is that if {@code size} is {@code 0}, the document does not contain images.
+        *
+        * @see FileInformationBlock#getLcbDggInfo()
+        */
        private void fillEscherRecords(byte[] data, int offset, int size)
        {
+               if (size == 0) return;
+
                EscherRecordFactory recordFactory = new DefaultEscherRecordFactory();
                int pos = offset;
                while ( pos < offset + size)
@@ -62,6 +66,7 @@ public final class EscherRecordHolder {
                return escherRecords;
        }
 
+       @Override
        public String toString() {
                StringBuilder buffer = new StringBuilder();