core: Adjust cJSON code for use in GPGME.
authorWerner Koch <wk@gnupg.org>
Wed, 14 Mar 2018 10:24:38 +0000 (11:24 +0100)
committerWerner Koch <wk@gnupg.org>
Fri, 16 Mar 2018 12:36:04 +0000 (13:36 +0100)
commit81c90d0cd0f959fd5e01baed9b4af0ec35ecb85c
treef35c1b4809b70c20e495e2f4482399d0f07670de
parent8eb08b318913644d918002f3195f7ec0e75ae239
core: Adjust cJSON code for use in GPGME.

* src/cJSON.c: Remove util.h.  Use gpgrt alloc functions.
(cJSON_Delete): Do not clobber ERRNO.
(cJSON_AddItemToObject): Return OBJECT or NULL.
(cJSON_AddNullToObject): New.
(cJSON_AddTrueToObject): New.
(cJSON_AddFalseToObject): New.
(cJSON_AddBoolToObject): New.
(cJSON_AddNumberToObject): New.
(cJSON_AddStringToObject): New.
* src/cJSON.h (cJSON__h): Replace macro by cJSON_h for C compliance.
(cJSON_AddNullToObject): Remove macro.
(cJSON_AddTrueToObject): Remove macro.
(cJSON_AddFalseToObject): Remove macro.
(cJSON_AddBoolToObject): Remove macro.
(cJSON_AddNumberToObject): Remove macro.
(cJSON_AddStringToObject): Remove macro.
--

The gpgrt malloc functions are used so that we can easily mix memory
returned by gpgrt (e.g. es_read_line) with memory returned from the
JSON function.  In general that is not needed but on Windows it makes
a difference if the gpgme DLL is linked to a different C runtime
than the application.

The macros have been replaced to allow error checking (i.e out of
core) for these functions.  More error checking should be implemented
instead of silently creating objects which are not as requested.

Signed-off-by: Werner Koch <wk@gnupg.org>
src/cJSON.c
src/cJSON.h