@@ -783,7 +783,7 @@ protected final int _parseIntPrimitive(DeserializationContext ctxt, String text)
783783 {
784784 try {
785785 if (text .length () > 9 ) {
786- ctxt . getParser (). streamReadConstraints ( ).validateIntegerLength (text .length ());
786+ _streamReadConstraints ( ctxt ).validateIntegerLength (text .length ());
787787 long l = NumberInput .parseLong (text );
788788 if (_intOverflow (l )) {
789789 Number v = (Number ) ctxt .handleWeirdStringValue (Integer .TYPE , text ,
@@ -861,7 +861,7 @@ protected final Integer _parseInteger(DeserializationContext ctxt, String text)
861861 {
862862 try {
863863 if (text .length () > 9 ) {
864- ctxt . getParser (). streamReadConstraints ( ).validateIntegerLength (text .length ());
864+ _streamReadConstraints ( ctxt ).validateIntegerLength (text .length ());
865865 long l = NumberInput .parseLong (text );
866866 if (_intOverflow (l )) {
867867 return (Integer ) ctxt .handleWeirdStringValue (Integer .class , text ,
@@ -944,7 +944,7 @@ protected final long _parseLongPrimitive(JsonParser p, DeserializationContext ct
944944 */
945945 protected final long _parseLongPrimitive (DeserializationContext ctxt , String text ) throws IOException
946946 {
947- ctxt . getParser (). streamReadConstraints ( ).validateIntegerLength (text .length ());
947+ _streamReadConstraints ( ctxt ).validateIntegerLength (text .length ());
948948 try {
949949 return NumberInput .parseLong (text );
950950 } catch (IllegalArgumentException iae ) { }
@@ -1014,7 +1014,7 @@ protected final Long _parseLong(JsonParser p, DeserializationContext ctxt,
10141014 */
10151015 protected final Long _parseLong (DeserializationContext ctxt , String text ) throws IOException
10161016 {
1017- ctxt . getParser (). streamReadConstraints ( ).validateIntegerLength (text .length ());
1017+ _streamReadConstraints ( ctxt ).validateIntegerLength (text .length ());
10181018 try {
10191019 return NumberInput .parseLong (text );
10201020 } catch (IllegalArgumentException iae ) { }
@@ -1105,7 +1105,7 @@ protected final float _parseFloatPrimitive(DeserializationContext ctxt, String t
11051105 {
11061106 // 09-Dec-2023, tatu: To avoid parser having to validate input, pre-validate:
11071107 if (NumberInput .looksLikeValidNumber (text )) {
1108- ctxt . getParser (). streamReadConstraints ( ).validateFPLength (text .length ());
1108+ _streamReadConstraints ( ctxt ).validateFPLength (text .length ());
11091109 try {
11101110 return NumberInput .parseFloat (text , false );
11111111 } catch (IllegalArgumentException iae ) { }
@@ -1123,7 +1123,7 @@ protected final float _parseFloatPrimitive(JsonParser p, DeserializationContext
11231123 {
11241124 // 09-Dec-2023, tatu: To avoid parser having to validate input, pre-validate:
11251125 if (NumberInput .looksLikeValidNumber (text )) {
1126- ctxt . getParser () .streamReadConstraints ().validateFPLength (text .length ());
1126+ p .streamReadConstraints ().validateFPLength (text .length ());
11271127 try {
11281128 return NumberInput .parseFloat (text , p .isEnabled (StreamReadFeature .USE_FAST_DOUBLE_PARSER ));
11291129 } catch (IllegalArgumentException iae ) { }
@@ -2379,4 +2379,11 @@ protected Number _nonNullNumber(Number n) {
23792379 }
23802380 return n ;
23812381 }
2382+
2383+ // @since 2.19.3: NPE check for older code that doesn't get JsonParser
2384+ protected StreamReadConstraints _streamReadConstraints (DeserializationContext ctxt ) {
2385+ JsonParser p = ctxt .getParser ();
2386+ // 29-Jun-2020, tatu: Should not be null, but let's be defensive
2387+ return (p == null ) ? StreamReadConstraints .defaults () : p .streamReadConstraints ();
2388+ }
23822389}
0 commit comments