diff options
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | src/yajl_gen.c | 3 | ||||
-rw-r--r-- | src/yajl_parser.c | 2 |
4 files changed, 11 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index b38b1a8..c0611a2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ PROJECT(YetAnotherJSONParser C) SET (YAJL_MAJOR 2) SET (YAJL_MINOR 0) -SET (YAJL_MICRO 3) +SET (YAJL_MICRO 4) SET (YAJL_DIST_NAME "yajl-${YAJL_MAJOR}.${YAJL_MINOR}.${YAJL_MICRO}") @@ -1,5 +1,10 @@ +2.0.4 + + 2.0.3 * John Stamp generation of a pkgconfig file at build time. + * @robzuber bugfix in yajl_tree_get() + * @lloyd - fix for compilation on 64 bit windows 2.0.2 * lth fix typos in yajl_tree.h macros YAJL_IS_INTEGER and YAJL_IS_DOUBLE, diff --git a/src/yajl_gen.c b/src/yajl_gen.c index d4684fb..f36da2a 100644 --- a/src/yajl_gen.c +++ b/src/yajl_gen.c @@ -223,6 +223,9 @@ yajl_gen_double(yajl_gen g, double number) if (isnan(number) || isinf(number)) return yajl_gen_invalid_number; INSERT_SEP; INSERT_WHITESPACE; sprintf(i, "%.20g", number); + if (strspn(i, "0123456789-") == strlen(i)) { + strcat(i, ".0"); + } g->print(g->ctx, i, (unsigned int)strlen(i)); APPENDED_ATOM; FINAL_NEWLINE; 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) |