aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPetri Lehtinen <petri@digip.org>2010-03-26 21:59:53 +0200
committerPetri Lehtinen <petri@digip.org>2010-03-26 21:59:56 +0200
commitbb89a5d4d377f7b6b8c0c9ce3a2698b112447d08 (patch)
tree1b3058c41825cddb68ccd4fdaf9146898fc3515a /src
parentf76966b4387607f54f294630ffc6d89a78530787 (diff)
downloadjansson-bb89a5d4d377f7b6b8c0c9ce3a2698b112447d08.zip
jansson-bb89a5d4d377f7b6b8c0c9ce3a2698b112447d08.tar.gz
jansson-bb89a5d4d377f7b6b8c0c9ce3a2698b112447d08.tar.bz2
Estimate real number underflows with 0.0
Earlier it was a decoding error.
Diffstat (limited to 'src')
-rw-r--r--src/load.c9
1 files changed, 1 insertions, 8 deletions
diff --git a/src/load.c b/src/load.c
index baf3183..649609a 100644
--- a/src/load.c
+++ b/src/load.c
@@ -483,14 +483,7 @@ static int lex_scan_number(lex_t *lex, char c, json_error_t *error)
value = strtod(saved_text, &end);
assert(end == saved_text + lex->saved_text.length);
- if(value == 0 && errno == ERANGE) {
- error_set(error, lex, "real number underflow");
- goto out;
- }
-
- /* Cannot test for +/-HUGE_VAL because the HUGE_VAL constant is
- only defined in C99 mode. So let's trust in sole errno. */
- else if(errno == ERANGE) {
+ if(errno == ERANGE && value != 0) {
error_set(error, lex, "real number overflow");
goto out;
}