Browse Source
Merge pull request #393 from besser82/enhancement/unsigned_refcount
json_object_private: Use unsigned 32-bit integer type for refcount
tags/json-c-0.14-20200419
Eric Haszlakiewicz
GitHub
7 years ago
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
4 additions and
1 deletions
-
json_object.c
-
json_object_private.h
|
|
@@ -169,6 +169,9 @@ extern struct json_object* json_object_get(struct json_object *jso) |
|
|
|
{ |
|
|
|
if (!jso) return jso; |
|
|
|
|
|
|
|
// Don't overflow the refcounter. |
|
|
|
assert(jso->_ref_count < UINT_FAST32_MAX); |
|
|
|
|
|
|
|
#if defined(HAVE_ATOMIC_BUILTINS) && defined(ENABLE_THREADING) |
|
|
|
__sync_add_and_fetch(&jso->_ref_count, 1); |
|
|
|
#else |
|
|
|
|
|
@@ -29,7 +29,7 @@ struct json_object |
|
|
|
enum json_type o_type; |
|
|
|
json_object_private_delete_fn *_delete; |
|
|
|
json_object_to_json_string_fn *_to_json_string; |
|
|
|
int _ref_count; |
|
|
|
uint_fast32_t _ref_count; |
|
|
|
struct printbuf *_pb; |
|
|
|
union data { |
|
|
|
json_bool c_boolean; |
|
|
|