@@ -763,7 +763,7 @@ protected final int _parseIntPrimitive(DeserializationContext ctxt, String text)
763763 {
764764 try {
765765 if (text .length () > 9 ) {
766- ctxt . getParser (). streamReadConstraints ( ).validateIntegerLength (text .length ());
766+ _streamReadConstraints ( ctxt ).validateIntegerLength (text .length ());
767767 long l = NumberInput .parseLong (text );
768768 if (_intOverflow (l )) {
769769 Number v = (Number ) ctxt .handleWeirdStringValue (Integer .TYPE , text ,
@@ -837,7 +837,7 @@ protected final Integer _parseInteger(DeserializationContext ctxt, String text)
837837 {
838838 try {
839839 if (text .length () > 9 ) {
840- ctxt . getParser (). streamReadConstraints ( ).validateIntegerLength (text .length ());
840+ _streamReadConstraints ( ctxt ).validateIntegerLength (text .length ());
841841 long l = NumberInput .parseLong (text );
842842 if (_intOverflow (l )) {
843843 return (Integer ) ctxt .handleWeirdStringValue (Integer .class , text ,
@@ -916,7 +916,7 @@ protected final long _parseLongPrimitive(JsonParser p, DeserializationContext ct
916916 */
917917 protected final long _parseLongPrimitive (DeserializationContext ctxt , String text ) throws IOException
918918 {
919- ctxt . getParser (). streamReadConstraints ( ).validateIntegerLength (text .length ());
919+ _streamReadConstraints ( ctxt ).validateIntegerLength (text .length ());
920920 try {
921921 return NumberInput .parseLong (text );
922922 } catch (IllegalArgumentException iae ) { }
@@ -982,7 +982,7 @@ protected final Long _parseLong(JsonParser p, DeserializationContext ctxt,
982982 */
983983 protected final Long _parseLong (DeserializationContext ctxt , String text ) throws IOException
984984 {
985- ctxt . getParser (). streamReadConstraints ( ).validateIntegerLength (text .length ());
985+ _streamReadConstraints ( ctxt ).validateIntegerLength (text .length ());
986986 try {
987987 return NumberInput .parseLong (text );
988988 } catch (IllegalArgumentException iae ) { }
@@ -1069,7 +1069,7 @@ protected final float _parseFloatPrimitive(DeserializationContext ctxt, String t
10691069 {
10701070 // 09-Dec-2023, tatu: To avoid parser having to validate input, pre-validate:
10711071 if (NumberInput .looksLikeValidNumber (text )) {
1072- ctxt . getParser (). streamReadConstraints ( ).validateFPLength (text .length ());
1072+ _streamReadConstraints ( ctxt ).validateFPLength (text .length ());
10731073 try {
10741074 return NumberInput .parseFloat (text , false );
10751075 } catch (IllegalArgumentException iae ) { }
@@ -1087,7 +1087,7 @@ protected final float _parseFloatPrimitive(JsonParser p, DeserializationContext
10871087 {
10881088 // 09-Dec-2023, tatu: To avoid parser having to validate input, pre-validate:
10891089 if (NumberInput .looksLikeValidNumber (text )) {
1090- ctxt . getParser () .streamReadConstraints ().validateFPLength (text .length ());
1090+ p .streamReadConstraints ().validateFPLength (text .length ());
10911091 try {
10921092 return NumberInput .parseFloat (text , p .isEnabled (StreamReadFeature .USE_FAST_DOUBLE_PARSER ));
10931093 } catch (IllegalArgumentException iae ) { }
@@ -2328,4 +2328,11 @@ protected Number _nonNullNumber(Number n) {
23282328 }
23292329 return n ;
23302330 }
2331+
2332+ // @since 2.19.3: NPE check for older code that doesn't get JsonParser
2333+ protected StreamReadConstraints _streamReadConstraints (DeserializationContext ctxt ) {
2334+ JsonParser p = ctxt .getParser ();
2335+ // 29-Jun-2020, tatu: Should not be null, but let's be defensive
2336+ return (p == null ) ? StreamReadConstraints .defaults () : p .streamReadConstraints ();
2337+ }
23312338}
0 commit comments