diff --git a/src/coders/BasicParser.inl b/src/coders/BasicParser.inl index 6eac2b47..2e7a3623 100644 --- a/src/coders/BasicParser.inl +++ b/src/coders/BasicParser.inl @@ -435,19 +435,21 @@ dv::value BasicParser::parseNumber(int sign) { static_cast(std::log10(afterdot) + 1) ) ); - c = source[pos]; double dvalue = (value + (afterdot / (double)expo)); - if (c == 'e' || c == 'E') { - pos++; - int s = 1; - if (peek() == '-') { - s = -1; - pos++; - } else if (peek() == '+') { + if (hasNext()){ + c = source[pos]; + if (c == 'e' || c == 'E') { pos++; + int s = 1; + if (peek() == '-') { + s = -1; + pos++; + } else if (peek() == '+') { + pos++; + } + return sign * dvalue * power(10.0, s * parseSimpleInt(10)); } - return sign * dvalue * power(10.0, s * parseSimpleInt(10)); } return sign * dvalue; }