Skip to content

Commit 4080ae2

Browse files
committed
Merge branch '2.18' into 2.19
2 parents 3497915 + 78bbc61 commit 4080ae2

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

ion/src/main/java/com/fasterxml/jackson/dataformat/ion/IonParser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -414,8 +414,8 @@ private long _getLongValue() throws IOException {
414414
try {
415415
if (this.getNumberType() == NumberType.BIG_INTEGER) {
416416
BigInteger bigInteger = _reader.bigIntegerValue();
417-
if (BI_MIN_INT.compareTo(bigInteger) > 0 || BI_MAX_INT.compareTo(bigInteger) < 0) {
418-
this.reportOverflowLong();
417+
if (BI_MIN_LONG.compareTo(bigInteger) > 0 || BI_MAX_LONG.compareTo(bigInteger) < 0) {
418+
reportOverflowLong();
419419
}
420420
return bigInteger.longValue();
421421
} else {

ion/src/test/java/com/fasterxml/jackson/dataformat/ion/IonNumberOverflowTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import org.hamcrest.Matchers;
66
import org.junit.jupiter.api.Test;
77

8+
import com.fasterxml.jackson.core.JsonParser;
9+
import com.fasterxml.jackson.core.JsonToken;
810
import com.fasterxml.jackson.core.exc.InputCoercionException;
911

1012
import static org.hamcrest.MatcherAssert.assertThat;
@@ -72,4 +74,15 @@ private void _testLongCoercionFail(BigInteger input) throws Exception
7274
}
7375
}
7476

77+
// [dataformats-binary#569]: incorrect overflow fail for long values (from BigInteger)
78+
@Test
79+
public void testLongAsBigIntegerSize() throws Exception {
80+
// Note: Values: Long.MAX_VALUE through Long.MAX_VALUE -7 are considered LONG by Ion.
81+
BigInteger bigIntLongValue = new BigInteger(Long.MAX_VALUE + "").subtract(BigInteger.TEN);
82+
IonParser bigIntLongParser = (IonParser) new IonFactory().createParser(bigIntLongValue.toString());
83+
assertEquals(JsonToken.VALUE_NUMBER_INT, bigIntLongParser.nextToken());
84+
assertEquals(JsonParser.NumberType.BIG_INTEGER, bigIntLongParser.getNumberType());
85+
assertEquals(JsonParser.NumberTypeFP.UNKNOWN, bigIntLongParser.getNumberTypeFP());
86+
assertEquals(bigIntLongValue.longValue(), bigIntLongParser.getLongValue());
87+
}
7588
}

release-notes/VERSION-2.x

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ Active maintainers:
3737

3838
2.18.4 (not yet released)
3939

40+
#569: (ion) `IonParser` fails to parse some `long` values saying
41+
they are out of range when they are not
42+
(reported, fix suggested by @seadbrane)
4043
- (ion) Upgrade `ion-java` to 1.11.10 (from 1.11.9)
4144

4245
2.18.3 (28-Feb-2025)

0 commit comments

Comments
 (0)