Merge branch '1.1'
authorPetri Lehtinen <petri@digip.org>
Sun, 20 Dec 2009 19:18:27 +0000 (21:18 +0200)
committerPetri Lehtinen <petri@digip.org>
Mon, 21 Dec 2009 10:52:25 +0000 (12:52 +0200)
Conflicts:
configure.ac
doc/conf.py

CHANGES
configure.ac
doc/conf.py
doc/github_commits.c
src/Makefile.am
src/dump.c
src/load.c

diff --git a/CHANGES b/CHANGES
index 64ddd6f..abe0062 100644 (file)
--- 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
index 4020469..d28a5e4 100644 (file)
@@ -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])
 
index c13315a..10f444d 100644 (file)
@@ -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.
index 3d8e2cb..75b5d34 100644 (file)
@@ -1,3 +1,10 @@
+/*
+ * Copyright (c) 2009 Petri Lehtinen <petri@digip.org>
+ *
+ * Jansson is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See LICENSE for details.
+ */
+
 #include <stdlib.h>
 #include <string.h>
 
index 9e9ee6c..87123a0 100644 (file)
@@ -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
index 328e93b..ba70f8d 100644 (file)
@@ -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);
         }
 
index 278f35e..4d08139 100644 (file)
@@ -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);