diff --git a/CHANGES b/CHANGES index 64ddd6f..abe0062 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,10 @@ +Version 1.1.3, released 2009-12-18 + +* Encode reals correctly, so that first encoding and then decoding a + real always produces the same value +* Don't export private symbols in libjansson.so + + Version 1.1.2, released 2009-11-08 * Fix a bug where an error message was not produced if the input file diff --git a/configure.ac b/configure.ac index 4020469..d28a5e4 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_PREREQ([2.59]) -AC_INIT([jansson], [1.1.2+], [petri@digip.org]) +AC_INIT([jansson], [1.1.3+], [petri@digip.org]) AM_INIT_AUTOMAKE([1.10 foreign]) diff --git a/doc/conf.py b/doc/conf.py index c13315a..10f444d 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -52,7 +52,7 @@ copyright = u'2009, Petri Lehtinen' # The short X.Y version. version = '1.1' # The full version, including alpha/beta/rc tags. -release = '1.1.2+' +release = '1.1.3+' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/doc/github_commits.c b/doc/github_commits.c index 3d8e2cb..75b5d34 100644 --- a/doc/github_commits.c +++ b/doc/github_commits.c @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2009 Petri Lehtinen + * + * Jansson is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See LICENSE for details. + */ + #include #include diff --git a/src/Makefile.am b/src/Makefile.am index 9e9ee6c..87123a0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -13,6 +13,8 @@ libjansson_la_SOURCES = \ utf.h \ util.h \ value.c -libjansson_la_LDFLAGS = -version-info 1:1:1 +libjansson_la_LDFLAGS = \ + -export-symbols-regex '^json_' \ + -version-info 1:2:1 AM_CFLAGS = -Wall -Wextra -Werror diff --git a/src/dump.c b/src/dump.c index 328e93b..ba70f8d 100644 --- a/src/dump.c +++ b/src/dump.c @@ -191,10 +191,25 @@ static int do_dump(const json_t *json, unsigned long flags, int depth, char buffer[MAX_REAL_STR_LENGTH]; int size; - size = snprintf(buffer, MAX_REAL_STR_LENGTH, "%0.17f", json_real_value(json)); + size = snprintf(buffer, MAX_REAL_STR_LENGTH, "%.17g", + json_real_value(json)); if(size >= MAX_REAL_STR_LENGTH) return -1; + /* Make sure there's a dot or 'e' in the output. Otherwise + a real is converted to an integer when decoding */ + if(strchr(buffer, '.') == NULL && + strchr(buffer, 'e') == NULL) + { + if(size + 2 >= MAX_REAL_STR_LENGTH) { + /* No space to append ".0" */ + return -1; + } + buffer[size] = '.'; + buffer[size + 1] = '0'; + size += 2; + } + return dump(buffer, size, data); } diff --git a/src/load.c b/src/load.c index 278f35e..4d08139 100644 --- a/src/load.c +++ b/src/load.c @@ -772,7 +772,7 @@ static json_t *parse_value(lex_t *lex, json_error_t *error) return json; } -json_t *parse_json(lex_t *lex, json_error_t *error) +static json_t *parse_json(lex_t *lex, json_error_t *error) { error_init(error);