From d857fd08a5bed44fc0c036737f0bc774db3ff562 Mon Sep 17 00:00:00 2001 From: Petri Lehtinen Date: Sat, 28 Nov 2009 13:39:06 +0200 Subject: [PATCH 1/5] doc/github_commits.c Add copyright notice --- doc/github_commits.c | 7 +++++++ 1 file changed, 7 insertions(+) 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 From 330e892ff645c4cb0956f32a6a28dfe7203b3390 Mon Sep 17 00:00:00 2001 From: Petri Lehtinen Date: Sun, 29 Nov 2009 13:00:47 +0200 Subject: [PATCH 2/5] Make parse_json static --- src/load.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/load.c b/src/load.c index 1ae62b3..005e03c 100644 --- a/src/load.c +++ b/src/load.c @@ -771,7 +771,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); From 7c707a73a2251c20afaecc028267b99d0ee60184 Mon Sep 17 00:00:00 2001 From: Petri Lehtinen Date: Sun, 29 Nov 2009 13:04:00 +0200 Subject: [PATCH 3/5] Only export symbols starting with "json_" in libjansson.la This way we don't pollute the symbol namespace with internal symbols. --- src/Makefile.am | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Makefile.am b/src/Makefile.am index 9e9ee6c..3ba8b8b 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:1:1 AM_CFLAGS = -Wall -Wextra -Werror From ec96cbf01693a90db15a13c3e77f68909036989e Mon Sep 17 00:00:00 2001 From: Petri Lehtinen Date: Thu, 17 Dec 2009 23:42:13 +0200 Subject: [PATCH 4/5] Encode reals correctly This patch changes the sprintf format from "%0.17f" to "%.17g", as the f format specifier doesn't print the exponent at all. This caused losing precision in all but the most simple cases. Because the g specifier doesn't print the decimal fraction or exponent if they're not needed, a ".0" has to be appended by hand in these cases. Otherwise the value's type changes from real to integer when decoding again. Thanks to Philip Grandinetti for reporting this issue. --- src/dump.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/dump.c b/src/dump.c index 7dbc9f2..bd12a7b 100644 --- a/src/dump.c +++ b/src/dump.c @@ -145,10 +145,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); } From 34fb97998cfeb4ae6f4bc9450c9144bd7572c1f6 Mon Sep 17 00:00:00 2001 From: Petri Lehtinen Date: Fri, 18 Dec 2009 21:43:12 +0200 Subject: [PATCH 5/5] jansson 1.1.3 --- CHANGES | 7 +++++++ configure.ac | 2 +- doc/conf.py | 2 +- src/Makefile.am | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) 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 1a6f7e7..5df7d77 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 be257e1..377e75d 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/src/Makefile.am b/src/Makefile.am index 3ba8b8b..87123a0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -15,6 +15,6 @@ libjansson_la_SOURCES = \ value.c libjansson_la_LDFLAGS = \ -export-symbols-regex '^json_' \ - -version-info 1:1:1 + -version-info 1:2:1 AM_CFLAGS = -Wall -Wextra -Werror