summaryrefslogtreecommitdiffstats
path: root/src/jv_parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/jv_parse.c')
-rw-r--r--src/jv_parse.c9
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;