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]