Author: fanningpj
Date: Tue Jun 9 11:06:29 2026
New Revision: 1935163
Log:
some tidy up
Modified:
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDate.java
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDateBuilder.java
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDuration.java
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/util/XsTypeConverter.java
Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDate.java
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDate.java Tue Jun 9
09:56:56 2026 (r1935162)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDate.java Tue Jun 9
11:06:29 2026 (r1935163)
@@ -151,7 +151,11 @@ public final class GDate implements GDat
throw new IllegalArgumentException("year value
starting with zero must be 4 or less digits: " + string);
}
- value = value * 10 + digitVal(ch);
+ long newValue = value * 10L + digitVal(ch);
+ if (newValue > Integer.MAX_VALUE) {
+ throw new IllegalArgumentException("date value causes
overflow: " + string);
+ }
+ value = Math.toIntExact(newValue);
start += 1;
}
digits += start;
Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDateBuilder.java
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDateBuilder.java Tue Jun
9 09:56:56 2026 (r1935162)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDateBuilder.java Tue Jun
9 11:06:29 2026 (r1935163)
@@ -1098,7 +1098,7 @@ public final class GDateBuilder implemen
static Date dateForGDate(GDateSpecification date) {
long jDate = julianDateForGDate(date);
long to1970Date = jDate - 2440588;
- long to1970Ms = 1000 * 60 * 60 * 24 * to1970Date;
+ long to1970Ms = Math.multiplyExact(1000 * 60 * 60 * 24, to1970Date);
to1970Ms += date.getMillisecond();
to1970Ms += date.getSecond() * 1000L;
Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDuration.java
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDuration.java Tue Jun
9 09:56:56 2026 (r1935162)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDuration.java Tue Jun
9 11:06:29 2026 (r1935163)
@@ -121,9 +121,10 @@ public final class GDuration implements
if (!GDate.isDigit(ch))
break;
int digit = GDate.digitVal(ch);
- if (value > (Integer.MAX_VALUE - digit) / 10)
+ long newValue = value * 10L + digit;
+ if (newValue > Integer.MAX_VALUE)
throw new IllegalArgumentException("duration field value
out of range: " + str);
- value = value * 10 + digit;
+ value = Math.toIntExact(newValue);
}
if (ch == '.')
{
Modified:
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/util/XsTypeConverter.java
==============================================================================
---
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/util/XsTypeConverter.java
Tue Jun 9 09:56:56 2026 (r1935162)
+++
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/util/XsTypeConverter.java
Tue Jun 9 11:06:29 2026 (r1935163)
@@ -399,7 +399,7 @@ public final class XsTypeConverter {
prefix = charSeq.subSequence(0, firstcolon).toString();
localname = charSeq.subSequence(firstcolon + 1,
charSeq.length()).toString();
if (firstcolon == 0) {
- throw new InvalidLexicalValueException("invalid xsd:QName '" +
charSeq.toString() + "'");
+ throw new InvalidLexicalValueException("invalid xsd:QName '" +
charSeq + "'");
}
} else {
prefix = EMPTY_PREFIX;
@@ -590,7 +590,7 @@ public final class XsTypeConverter {
// int parser on a CharSequence
int length = ch.length();
if (length < 1) {
- throw new NumberFormatException("For input string: \"" +
ch.toString() + "\"");
+ throw new NumberFormatException("For input string: \"" + ch +
"\"");
}
int sign = 1;
@@ -620,17 +620,17 @@ public final class XsTypeConverter {
int v = (c >= '0' && c <= '9') ? c - '0' : -1;
if (v < 0) {
- throw new NumberFormatException("For input string: \"" +
ch.toString() + "\"");
+ throw new NumberFormatException("For input string: \"" + ch +
"\"");
}
if (result < limit || (result == limit && v > limit2)) {
- throw new NumberFormatException("For input string: \"" +
ch.toString() + "\"");
+ throw new NumberFormatException("For input string: \"" + ch +
"\"");
}
- result = result * 10 - v;
+ result = Math.toIntExact(result * 10L - v);
}
- return sign * result;
+ return Math.multiplyExact(sign, result);
}
// ======================== anyURI ========================
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]