diff options
author | William Langford <wlangfor@gmail.com> | 2019-04-03 21:55:39 -0400 |
---|---|---|
committer | William Langford <wlangfor@gmail.com> | 2019-04-03 22:20:31 -0400 |
commit | 2353d034b20558ed8cd1ce81786faa31c0ed33d1 (patch) | |
tree | 68bc9b386297c72749e2d38995da61ac2543ce8c /src/jv_parse.c | |
parent | ccc3e1f401ac0663dd591e5a05d6ddbc79ef35f3 (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.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; |