This is an automated email from the ASF dual-hosted git repository.

pjfanning pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/poi.git


The following commit(s) were added to refs/heads/trunk by this push:
     new eae4d6f6da more overflow possibilities
eae4d6f6da is described below

commit eae4d6f6da45f600761218c016a296c010ec2c68
Author: PJ Fanning <[email protected]>
AuthorDate: Wed May 27 16:47:50 2026 +0100

    more overflow possibilities
---
 .../java/org/apache/poi/sl/draw/BitmapImageRenderer.java  |  6 +++++-
 .../java/org/apache/poi/sl/draw/PathGradientPaint.java    | 15 ++++++++-------
 .../java/org/apache/poi/ss/formula/functions/Rept.java    |  3 ++-
 .../java/org/apache/poi/ss/usermodel/FractionFormat.java  |  3 ++-
 .../java/org/apache/poi/ss/usermodel/ReadingOrder.java    |  2 +-
 poi/src/main/java/org/apache/poi/ss/util/ImageUtils.java  |  4 ++--
 6 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/poi/src/main/java/org/apache/poi/sl/draw/BitmapImageRenderer.java 
b/poi/src/main/java/org/apache/poi/sl/draw/BitmapImageRenderer.java
index cb3921eac6..e9920f720f 100644
--- a/poi/src/main/java/org/apache/poi/sl/draw/BitmapImageRenderer.java
+++ b/poi/src/main/java/org/apache/poi/sl/draw/BitmapImageRenderer.java
@@ -47,6 +47,7 @@ import org.apache.logging.log4j.Logger;
 import org.apache.poi.logging.PoiLogManager;
 import org.apache.poi.sl.usermodel.PictureData.PictureType;
 import org.apache.poi.util.IOUtils;
+import org.apache.poi.util.MathUtil;
 
 /**
  * For now this class renders only images supported by the 
javax.imageio.ImageIO framework.
@@ -264,7 +265,10 @@ public class BitmapImageRenderer implements ImageRenderer {
         if (w_old == w_new && h_old == h_new) {
             return img;
         }
-        BufferedImage scaled = new BufferedImage((int)w_new, (int)h_new, 
BufferedImage.TYPE_INT_ARGB);
+        BufferedImage scaled = new BufferedImage(
+                MathUtil.safeDoubleToInt(w_new),
+                MathUtil.safeDoubleToInt(h_new),
+                BufferedImage.TYPE_INT_ARGB);
         AffineTransform at = new AffineTransform();
         at.scale(w_new/w_old, h_new/h_old);
         AffineTransformOp scaleOp = new AffineTransformOp(at, 
AffineTransformOp.TYPE_BILINEAR);
diff --git a/poi/src/main/java/org/apache/poi/sl/draw/PathGradientPaint.java 
b/poi/src/main/java/org/apache/poi/sl/draw/PathGradientPaint.java
index 40c802ccac..3fd296b477 100644
--- a/poi/src/main/java/org/apache/poi/sl/draw/PathGradientPaint.java
+++ b/poi/src/main/java/org/apache/poi/sl/draw/PathGradientPaint.java
@@ -40,6 +40,7 @@ import java.awt.image.Raster;
 import java.awt.image.WritableRaster;
 
 import org.apache.poi.util.Internal;
+import org.apache.poi.util.MathUtil;
 
 @Internal
 public class PathGradientPaint implements Paint {
@@ -147,13 +148,13 @@ public class PathGradientPaint implements Paint {
 
             Rectangle2D destRect = new Rectangle2D.Double();
             Rectangle2D.intersect(childRect, deviceBounds, destRect);
-            int dx = (int)(destRect.getX()-deviceBounds.getX());
-            int dy = (int)(destRect.getY()-deviceBounds.getY());
-            int dw = (int)destRect.getWidth();
-            int dh = (int)destRect.getHeight();
+            int dx = 
MathUtil.safeDoubleToInt(destRect.getX()-deviceBounds.getX());
+            int dy = 
MathUtil.safeDoubleToInt(destRect.getY()-deviceBounds.getY());
+            int dw = MathUtil.safeDoubleToInt(destRect.getWidth();
+            int dh = MathUtil.safeDoubleToInt(destRect.getHeight();
             Object data = raster.getDataElements(dx, dy, dw, dh, null);
-            dx = (int)(destRect.getX()-childRect.getX());
-            dy = (int)(destRect.getY()-childRect.getY());
+            dx = MathUtil.safeDoubleToInt(destRect.getX()-childRect.getX());
+            dy = MathUtil.safeDoubleToInt(destRect.getY()-childRect.getY());
             childRaster.setDataElements(dx, dy, dw, dh, data);
 
             return childRaster;
@@ -162,7 +163,7 @@ public class PathGradientPaint implements Paint {
         int getGradientSteps(Shape gradientShape) {
             Rectangle rect = gradientShape.getBounds();
             int lower = 1;
-            int upper = (int)(Math.max(rect.getWidth(),rect.getHeight())/2.0);
+            int upper = 
MathUtil.safeDoubleToInt(Math.max(rect.getWidth(),rect.getHeight())/2.0);
             while (lower < upper-1) {
                 int mid = lower + (upper - lower) / 2;
                 BasicStroke bs = new BasicStroke(mid, capStyle, joinStyle);
diff --git a/poi/src/main/java/org/apache/poi/ss/formula/functions/Rept.java 
b/poi/src/main/java/org/apache/poi/ss/formula/functions/Rept.java
index 33b2c46366..44f7a248c0 100644
--- a/poi/src/main/java/org/apache/poi/ss/formula/functions/Rept.java
+++ b/poi/src/main/java/org/apache/poi/ss/formula/functions/Rept.java
@@ -22,6 +22,7 @@ import org.apache.poi.ss.formula.eval.EvaluationException;
 import org.apache.poi.ss.formula.eval.OperandResolver;
 import org.apache.poi.ss.formula.eval.StringEval;
 import org.apache.poi.ss.formula.eval.ValueEval;
+import org.apache.poi.util.MathUtil;
 
 /**
  * Implementation for Excel REPT () function.
@@ -57,7 +58,7 @@ public class Rept extends Fixed2ArgFunction  {
             return ErrorEval.VALUE_INVALID;
         }
 
-        int numberOfTimeInt = (int)numberOfTime;
+        int numberOfTimeInt = MathUtil.safeDoubleToInt(numberOfTime);
         StringBuilder strb = new StringBuilder(strText1.length() * 
numberOfTimeInt);
         for(int i = 0; i < numberOfTimeInt; i++) {
             strb.append(strText1);
diff --git a/poi/src/main/java/org/apache/poi/ss/usermodel/FractionFormat.java 
b/poi/src/main/java/org/apache/poi/ss/usermodel/FractionFormat.java
index 050b5eadd4..f33e820839 100644
--- a/poi/src/main/java/org/apache/poi/ss/usermodel/FractionFormat.java
+++ b/poi/src/main/java/org/apache/poi/ss/usermodel/FractionFormat.java
@@ -28,6 +28,7 @@ import org.apache.logging.log4j.Logger;
 import org.apache.poi.logging.PoiLogManager;
 import org.apache.poi.ss.format.SimpleFraction;
 import org.apache.poi.ss.formula.eval.NotImplementedException;
+import org.apache.poi.util.MathUtil;
 
 /**
  * <p>Format class that handles Excel style fractions, such as "# #/#" and 
"#/###"</p>
@@ -91,7 +92,7 @@ public class FractionFormat extends Format {
             } else if (m.group(1) != null) {
                 int len = m.group(1).length();
                 len = Math.min(len, MAX_DENOM_POW);
-                tmpMax = (int)Math.pow(10, len);
+                tmpMax = MathUtil.safeDoubleToInt(Math.pow(10, len));
             } else {
                 tmpExact = 100;
             }
diff --git a/poi/src/main/java/org/apache/poi/ss/usermodel/ReadingOrder.java 
b/poi/src/main/java/org/apache/poi/ss/usermodel/ReadingOrder.java
index 0544cb1542..7a99106c91 100644
--- a/poi/src/main/java/org/apache/poi/ss/usermodel/ReadingOrder.java
+++ b/poi/src/main/java/org/apache/poi/ss/usermodel/ReadingOrder.java
@@ -45,6 +45,6 @@ public enum ReadingOrder {
         if (code < 0 || code >= values().length) {
             throw new IllegalArgumentException("Invalid ReadingOrder code: " + 
code);
         }
-        return values()[(int)code];
+        return values()[Math.toIntExact(code)];
     }
 }
diff --git a/poi/src/main/java/org/apache/poi/ss/util/ImageUtils.java 
b/poi/src/main/java/org/apache/poi/ss/util/ImageUtils.java
index 8347618971..91fffdf6d4 100644
--- a/poi/src/main/java/org/apache/poi/ss/util/ImageUtils.java
+++ b/poi/src/main/java/org/apache/poi/ss/util/ImageUtils.java
@@ -126,12 +126,12 @@ public final class ImageUtils {
         Element node = 
(Element)r.getImageMetadata(0).getAsTree("javax_imageio_1.0");
         lst = node.getElementsByTagName("HorizontalPixelSize");
         if(lst != null && lst.getLength() == 1) {
-            hdpi = 
(int)(mm2inch/Float.parseFloat(((Element)lst.item(0)).getAttribute("value")));
+            hdpi = 
MathUtil.safeDoubleToInt(mm2inch/Double.parseDouble(((Element)lst.item(0)).getAttribute("value")));
         }
 
         lst = node.getElementsByTagName("VerticalPixelSize");
         if(lst != null && lst.getLength() == 1) {
-            vdpi = 
(int)(mm2inch/Float.parseFloat(((Element)lst.item(0)).getAttribute("value")));
+            vdpi = 
MathUtil.safeDoubleToInt(mm2inch/Double.parseDouble(((Element)lst.item(0)).getAttribute("value")));
         }
 
         return new int[]{hdpi, vdpi};


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to