From 548de6039d0cb206fa64748400dc4f4163dcaa6f Mon Sep 17 00:00:00 2001 From: Nathaniel McCallum Date: Tue, 20 Sep 2016 09:34:18 -0400 Subject: [PATCH] Update to 2.9 --- jansson-2.8-json_auto_t.patch | 88 ----------------------------------- jansson.spec | 9 ++-- sources | 2 +- 3 files changed, 6 insertions(+), 93 deletions(-) delete mode 100644 jansson-2.8-json_auto_t.patch diff --git a/jansson-2.8-json_auto_t.patch b/jansson-2.8-json_auto_t.patch deleted file mode 100644 index fa507b5..0000000 --- a/jansson-2.8-json_auto_t.patch +++ /dev/null @@ -1,88 +0,0 @@ -From 63b9fd055248bcd427fd455ce9623431885b235e Mon Sep 17 00:00:00 2001 -From: Nathaniel McCallum -Date: Tue, 30 Aug 2016 16:12:22 -0400 -Subject: [PATCH] Add support for the cleanup attribute in GCC/Clang - -The new json_auto_t macro allows easy declaration of json_t types that -automatically decrement at the end of their scope. ---- - doc/apiref.rst | 18 ++++++++++++++++++ - src/jansson.h | 13 +++++++++++++ - test/suites/api/test_simple.c | 13 +++++++++++++ - 3 files changed, 44 insertions(+) - -diff --git a/doc/apiref.rst b/doc/apiref.rst -index 0ab2348..2a090e4 100644 ---- a/doc/apiref.rst -+++ b/doc/apiref.rst -@@ -253,6 +253,24 @@ other. Moreover, trying to encode the values with any of the encoding - functions will fail. The encoder detects circular references and - returns an error status. - -+Scope Dereferencing -+------------------- -+ -+It is possible to use the ``json_auto_t`` type to automatically -+dereference a value at the end of a scope. For example:: -+ -+ void function(void) { -+ json_auto_t *value = NULL; -+ value = json_string("foo"); -+ /* json_decref(value) is automatically called. */ -+ } -+ -+This feature is only available on GCC and Clang. So if your project -+has a portability requirement for other compilers, you should avoid -+this feature. -+ -+Additionally, as always, care should be taken when passing values to -+functions that steal references. - - True, False and Null - ==================== -diff --git a/src/jansson.h b/src/jansson.h -index 17a6e7a..b1a040a 100644 ---- a/src/jansson.h -+++ b/src/jansson.h -@@ -112,6 +112,19 @@ void json_decref(json_t *json) - json_delete(json); - } - -+#if defined(__GNUC__) || defined(__clang__) -+static JSON_INLINE -+void json_decrefp(json_t **json) -+{ -+ if(json) { -+ json_decref(*json); -+ *json = NULL; -+ } -+} -+ -+#define json_auto_t json_t __attribute__((cleanup(json_decrefp))) -+#endif -+ - - /* error reporting */ - -diff --git a/test/suites/api/test_simple.c b/test/suites/api/test_simple.c -index 8b56954..e461561 100644 ---- a/test/suites/api/test_simple.c -+++ b/test/suites/api/test_simple.c -@@ -224,4 +224,17 @@ static void run_tests() - json_incref(value); - if(value->refcount != (size_t)-1) - fail("refcounting null works incorrectly"); -+ -+#ifdef json_auto_t -+ value = json_string("foo"); -+ { -+ json_auto_t *test = json_incref(value); -+ /* Use test so GCC doesn't complain it is unused. */ -+ if(!json_is_string(test)) -+ fail("value type check failed"); -+ } -+ if(value->refcount != 1) -+ fail("automatic decrement failed"); -+ json_decref(value); -+#endif - } diff --git a/jansson.spec b/jansson.spec index 35ebd9f..7d3c7d9 100644 --- a/jansson.spec +++ b/jansson.spec @@ -1,5 +1,5 @@ Name: jansson -Version: 2.8 +Version: 2.9 Release: 1%{?dist} Summary: C library for encoding, decoding and manipulating JSON data @@ -7,10 +7,8 @@ Group: System Environment/Libraries License: MIT URL: http://www.digip.org/jansson/ Source0: http://www.digip.org/jansson/releases/jansson-%{version}.tar.bz2 -Patch0: jansson-2.8-json_auto_t.patch BuildRequires: python-sphinx -BuildRequires: git %description Small library for parsing and writing JSON documents. @@ -31,7 +29,7 @@ BuildArch: noarch Development documentation for jansson. %prep -%autosetup -S git +%setup -q %build %configure --disable-static @@ -62,6 +60,9 @@ rm "$RPM_BUILD_ROOT%{_libdir}"/*.la %doc doc/_build/html/* %changelog +* Tue Sep 20 2016 Nathaniel McCallum - 2.9-1 +- Update to Jansson 2.9 + * Fri Sep 16 2016 Nathaniel McCallum - 2.8-1 - Update to Jansson 2.8 - Add json_auto_t patch diff --git a/sources b/sources index 8567a58..2f1526c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -592e29db0903d3031ea5a4e5a22fe75c jansson-2.8.tar.bz2 +4b9d8fe6690ae3f10a227165bc02b696 jansson-2.9.tar.bz2