diff options
Diffstat (limited to 'src/jv_parse.c')
-rw-r--r-- | src/jv_parse.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/jv_parse.c b/src/jv_parse.c index d709e416..9ced9f6d 100644 --- a/src/jv_parse.c +++ b/src/jv_parse.c @@ -501,11 +501,20 @@ static pfunc check_literal(struct jv_parser* p) { } else { // FIXME: better parser p->tokenbuf[p->tokenpos] = 0; +#ifdef USE_DECNUM jv number = jv_number_with_literal(p->tokenbuf); if (jv_get_kind(number) == JV_KIND_INVALID) { return "Invalid numeric literal"; } TRY(value(p, number)); +#else + char *end = 0; + double d = jvp_strtod(&p->dtoa, p->tokenbuf, &end); + if (end == 0 || *end != 0) { + return "Invalid numeric literal"; + } + TRY(value(p, jv_number(d))); +#endif } p->tokenpos = 0; return 0; |