]> source.dussan.org Git - poi.git/commitdiff
more int narrowing
authorPJ Fanning <fanningpj@apache.org>
Fri, 19 Aug 2022 09:02:15 +0000 (09:02 +0000)
committerPJ Fanning <fanningpj@apache.org>
Fri, 19 Aug 2022 09:02:15 +0000 (09:02 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1903560 13f79535-47bb-0310-9956-ffa450edef68

poi-scratchpad/src/main/java/org/apache/poi/hemf/record/emfplus/HemfPlusBrush.java
poi-scratchpad/src/main/java/org/apache/poi/hemf/record/emfplus/HemfPlusObject.java
poi-scratchpad/src/main/java/org/apache/poi/hemf/record/emfplus/HemfPlusPen.java
poi-scratchpad/src/main/java/org/apache/poi/hslf/dev/SlideShowDumper.java
poi-scratchpad/src/main/java/org/apache/poi/hslf/record/HSLFEscherClientDataRecord.java

index ec0ac8e465c46b0fa063ca0d7c1c4df7807e1fb6..f2fc063258a7b942fb28219614a039c6fdbd043b 100644 (file)
@@ -709,7 +709,7 @@ public class HemfPlusBrush {
             // that appears at the center point of the brush. The color of the brush changes gradually from the
             // boundary color to the center color as it moves from the boundary to the center point.
             centerColor = readARGB(leis.readInt());
-            int size = 3*LittleEndianConsts.INT_SIZE;
+            long size = 3*LittleEndianConsts.INT_SIZE;
 
             if (wrapMode == null) {
                 return size;
@@ -785,7 +785,7 @@ public class HemfPlusBrush {
                 size += 3*LittleEndianConsts.INT_SIZE;
             }
 
-            return size;
+            return Math.toIntExact(size);
         }
 
         @Override
@@ -846,7 +846,7 @@ public class HemfPlusBrush {
             // across a shape, when the image is smaller than the area being filled.
             wrapMode = EmfPlusWrapMode.valueOf(leis.readInt());
 
-            int size = 2*LittleEndianConsts.INT_SIZE;
+            long size = 2*LittleEndianConsts.INT_SIZE;
 
             if (TRANSFORM.isSet(dataFlags)) {
                 size += readXForm(leis, (brushTransform = new AffineTransform()));
@@ -856,7 +856,7 @@ public class HemfPlusBrush {
                 size += (image = new EmfPlusImage()).init(leis, dataSize-size, EmfPlusObjectType.IMAGE, 0);
             }
 
-            return size;
+            return Math.toIntExact(size);
         }
 
         @Override
index 1e04c5524edc1a1e2970e0e349c43562fcff7239..2553102d1181b7286e9f1fe2d4cb2345404c38cf 100644 (file)
@@ -174,7 +174,7 @@ public class HemfPlusObject {
             EmfPlusObjectType objectType = getObjectType();
             assert (objectType != null);
 
-            int size = 0;
+            long size = 0;
 
             totalObjectSize = 0;
             int dataSize2 = (int) dataSize;
@@ -192,7 +192,7 @@ public class HemfPlusObject {
             objectData = objectType.constructor.get();
             size += objectData.init(leis, dataSize2, objectType, flags);
 
-            return size;
+            return Math.toIntExact(size);
         }
 
         @Override
index cd00d453cc1aabdf7657b366a89519c89a2f3bdf..42dd6e44e6fcb2123cc925b71b6e88d09b2637b4 100644 (file)
@@ -533,7 +533,7 @@ public class HemfPlusPen {
         @SuppressWarnings("unused")
         private long initCustomCap(Consumer<EmfPlusCustomLineCap> setter, LittleEndianInputStream leis) throws IOException {
             int CustomStartCapSize = leis.readInt();
-            int size = LittleEndianConsts.INT_SIZE;
+            long size = LittleEndianConsts.INT_SIZE;
 
             EmfPlusGraphicsVersion version = new EmfPlusGraphicsVersion();
             size += version.init(leis);
@@ -547,13 +547,13 @@ public class HemfPlusPen {
 
             setter.accept(cap);
 
-            return size;
+            return Math.toIntExact(size);
         }
 
         @Override
         public void applyObject(HemfGraphics ctx, List<? extends EmfPlusObjectData> continuedObjectData) {
             final HemfDrawProperties prop = ctx.getProperties();
-            // TOOD:
+            // TODO:
             // - set width according unit type
             // - provide logic for different start and end cap
             // - provide standard caps like diamond
index 084b15b9c1ddd93933f1d2c7887f9bd8e68ef7aa..d4d60947439460457ea3e630c1d855ae31c6bd80 100644 (file)
@@ -281,19 +281,10 @@ public final class SlideShowDumper {
         if (recordLen == 8 && atomLen > 8) {
             // Assume it has children, rather than being corrupted
             walkEscherDDF((indent + 3), pos + 8, (int) atomLen);
-
-            // Wind on our length + our header
-            pos += atomLen;
-            pos += 8;
-            len -= atomLen;
-            len -= 8;
-        } else {
-            // No children, wind on our real length
-            pos += atomLen;
-            pos += 8;
-            len -= atomLen;
-            len -= 8;
         }
+        // Wind on our length + our header
+        pos = Math.toIntExact(pos + atomLen) + 8;
+        len = Math.toIntExact(len - atomLen) - 8;
 
         // Move on to the next one, if we're not at the end yet
         if (len >= 8) {
index 328efb1b294788513488e1f565479ff8a6870876..14751254d6d18fd25709469b33c3d3232d0e1144 100644 (file)
@@ -113,7 +113,7 @@ public class HSLFEscherClientDataRecord extends EscherClientDataRecord {
                 _childRecords.add(r);
             }
             long rlen = LittleEndian.getUInt(remainingData,offset+4);
-            offset += 8 + rlen;
+            offset = Math.toIntExact(offset + 8 + rlen);
         }
     }