summaryrefslogtreecommitdiffstats
path: root/src/jv_parse.c
diff options
context:
space:
mode:
authorWilliam Langford <wlangfor@gmail.com>2019-04-03 21:55:39 -0400
committerWilliam Langford <wlangfor@gmail.com>2019-04-03 22:20:31 -0400
commit2353d034b20558ed8cd1ce81786faa31c0ed33d1 (patch)
tree68bc9b386297c72749e2d38995da61ac2543ce8c /src/jv_parse.c
parentccc3e1f401ac0663dd591e5a05d6ddbc79ef35f3 (diff)
Add configure guards around literal jv_numbersdec_literal_number
Allow building jq in a mode that doesn't use decnumber for benchmarking purposes. decnumber support is enabled by default, and this option is meant to be removed once we're happy with the performance.
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;