From: Petri Lehtinen Date: Tue, 23 Mar 2010 06:15:19 +0000 (+0200) Subject: Merge branch '1.2' X-Git-Tag: v1.3~7 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=jansson.git;a=commitdiff_plain;h=49880cbabeb597a9c748a3d5f37e9961a084dce3;hp=66a69f3f1056da25446b01b18e01c9484f432c68 Merge branch '1.2' --- diff --git a/configure.ac b/configure.ac index 17f1e01..6d21268 100644 --- a/configure.ac +++ b/configure.ac @@ -16,6 +16,7 @@ AC_PROG_LIBTOOL # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. +AC_TYPE_INT32_T # Checks for library functions. diff --git a/src/dump.c b/src/dump.c index a08c2e1..a862cba 100644 --- a/src/dump.c +++ b/src/dump.c @@ -9,7 +9,6 @@ #include #include #include -#include #include #include diff --git a/src/load.c b/src/load.c index bcc7aa7..baf3183 100644 --- a/src/load.c +++ b/src/load.c @@ -14,7 +14,6 @@ #include #include #include -#include #include #include "jansson_private.h" diff --git a/src/utf.c b/src/utf.c index 9f4cb93..92484d0 100644 --- a/src/utf.c +++ b/src/utf.c @@ -6,7 +6,7 @@ */ #include -#include +#include "utf.h" int utf8_encode(int32_t codepoint, char *buffer, int *size) { diff --git a/src/utf.h b/src/utf.h index 95abdc9..d0ae6e9 100644 --- a/src/utf.h +++ b/src/utf.h @@ -8,6 +8,15 @@ #ifndef UTF_H #define UTF_H +#include + +#ifdef HAVE_INTTYPES_H +/* inttypes.h includes stdint.h in a standard environment, so there's +no need to include stdint.h separately. If inttypes.h doesn't define +int32_t, it's defined in config.h. */ +#include +#endif + int utf8_encode(int codepoint, char *buffer, int *size); int utf8_check_first(char byte); diff --git a/src/value.c b/src/value.c index f74c684..7c41c89 100644 --- a/src/value.c +++ b/src/value.c @@ -833,7 +833,7 @@ json_t *json_true(void) { static json_t the_true = { .type = JSON_TRUE, - .refcount = (unsigned int)1 + .refcount = (unsigned int)-1 }; return &the_true; } @@ -843,7 +843,7 @@ json_t *json_false(void) { static json_t the_false = { .type = JSON_FALSE, - .refcount = (unsigned int)1 + .refcount = (unsigned int)-1 }; return &the_false; } @@ -853,7 +853,7 @@ json_t *json_null(void) { static json_t the_null = { .type = JSON_NULL, - .refcount = (unsigned int)1 + .refcount = (unsigned int)-1 }; return &the_null; } diff --git a/test/suites/api/test_simple.c b/test/suites/api/test_simple.c index 45f22c7..1769c65 100644 --- a/test/suites/api/test_simple.c +++ b/test/suites/api/test_simple.c @@ -150,5 +150,36 @@ int main() fail("json_null failed"); json_decref(value); + /* Test reference counting on singletons (true, false, null) */ + value = json_true(); + if(value->refcount != (unsigned int)-1) + fail("refcounting true works incorrectly"); + json_decref(value); + if(value->refcount != (unsigned int)-1) + fail("refcounting true works incorrectly"); + json_incref(value); + if(value->refcount != (unsigned int)-1) + fail("refcounting true works incorrectly"); + + value = json_false(); + if(value->refcount != (unsigned int)-1) + fail("refcounting false works incorrectly"); + json_decref(value); + if(value->refcount != (unsigned int)-1) + fail("refcounting false works incorrectly"); + json_incref(value); + if(value->refcount != (unsigned int)-1) + fail("refcounting false works incorrectly"); + + value = json_null(); + if(value->refcount != (unsigned int)-1) + fail("refcounting null works incorrectly"); + json_decref(value); + if(value->refcount != (unsigned int)-1) + fail("refcounting null works incorrectly"); + json_incref(value); + if(value->refcount != (unsigned int)-1) + fail("refcounting null works incorrectly"); + return 0; }