summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author7AC <giusva@gmail.com>2011-06-14 00:29:01 -0700
committer7AC <giusva@gmail.com>2011-06-14 00:29:01 -0700
commitc651473311637c703df8fae4b2ea063909fdc43f (patch)
tree17f5cfaaf162c140ef5ac64aa5ac5c95c8c21327
parentdbcba50b7785170d89bfeddaf2b41fe3f3ffacf4 (diff)
downloadyajl-c651473311637c703df8fae4b2ea063909fdc43f.tar.gz
added errno resetting before setting/checking it in yajl_do_parse()
-rw-r--r--src/yajl_parser.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/yajl_parser.c b/src/yajl_parser.c
index 3903b38..2cf8a07 100644
--- a/src/yajl_parser.c
+++ b/src/yajl_parser.c
@@ -279,6 +279,7 @@ yajl_do_parse(yajl_handle hand, const unsigned char * jsonText,
hand->ctx,(const char *) buf, bufLen));
} else if (hand->callbacks->yajl_integer) {
long long int i = 0;
+ errno = 0;
i = yajl_parse_integer(buf, bufLen);
if ((i == LLONG_MIN || i == LLONG_MAX) &&
errno == ERANGE)
@@ -306,6 +307,7 @@ yajl_do_parse(yajl_handle hand, const unsigned char * jsonText,
yajl_buf_clear(hand->decodeBuf);
yajl_buf_append(hand->decodeBuf, buf, bufLen);
buf = yajl_buf_data(hand->decodeBuf);
+ errno = 0;
d = strtod((char *) buf, NULL);
if ((d == HUGE_VAL || d == -HUGE_VAL) &&
errno == ERANGE)