diff options
author | minfrin <minfrin@13f79535-47bb-0310-9956-ffa450edef68> | 2018-09-01 10:01:21 +0000 |
---|---|---|
committer | minfrin <minfrin@13f79535-47bb-0310-9956-ffa450edef68> | 2018-09-01 10:01:21 +0000 |
commit | fc41a6828ddbade7285872f9c8af23e3c2fb961d (patch) | |
tree | 90bb29a4ce2e4984bfd75bed83fa433335864645 /json/apr_json.c | |
parent | 6e8f37f8021a2b57c5ae500425347788840708b7 (diff) | |
download | libapr-fc41a6828ddbade7285872f9c8af23e3c2fb961d.tar.gz |
Revert 1839779 for now to unblock apr_jose.h.
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@1839812 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'json/apr_json.c')
-rw-r--r-- | json/apr_json.c | 54 |
1 files changed, 15 insertions, 39 deletions
diff --git a/json/apr_json.c b/json/apr_json.c index 3ce2b87b4..d3bc8329d 100644 --- a/json/apr_json.c +++ b/json/apr_json.c @@ -129,50 +129,21 @@ apr_json_value_t *apr_json_null_create(apr_pool_t *pool) return json; } -apr_status_t apr__json_object_set(apr_json_value_t *object, - apr_json_value_t *key, apr_json_value_t *val, apr_pool_t *pool); - -apr_status_t apr__json_object_set(apr_json_value_t *object, - apr_json_value_t *key, apr_json_value_t *val, apr_pool_t *pool) -{ - apr_json_kv_t *kv; - apr_hash_t *hash; - - hash = object->value.object->hash; - - kv = apr_hash_get(hash, key->value.string.p, key->value.string.len); - if (!kv) { - kv = apr_palloc(pool, sizeof(apr_json_kv_t)); - if (!kv) { - return APR_ENOMEM; - } - - APR_RING_ELEM_INIT(kv, link); - APR_JSON_OBJECT_INSERT_TAIL(object->value.object, kv); - apr_hash_set(hash, key->value.string.p, key->value.string.len, kv); - } - - kv->k = key; - kv->v = val; - - return APR_SUCCESS; -} - apr_status_t apr_json_object_set(apr_json_value_t *object, const char *key, apr_ssize_t klen, apr_json_value_t *val, apr_pool_t *pool) { - apr_json_value_t *k; + apr_json_kv_t *kv; + apr_hash_t *hash; if (object->type != APR_JSON_OBJECT) { return APR_EINVAL; } - if (!val) { - apr_hash_t *hash; - apr_json_kv_t *kv; + hash = object->value.object->hash; + + kv = apr_hash_get(hash, key, klen); - hash = object->value.object->hash; - kv = apr_hash_get(hash, key, klen); + if (!val) { if (kv) { apr_hash_set(hash, key, klen, NULL); APR_RING_REMOVE((kv), link); @@ -180,12 +151,17 @@ apr_status_t apr_json_object_set(apr_json_value_t *object, const char *key, return APR_SUCCESS; } - k = apr_json_string_create(pool, key, klen); - if (!k) { - return APR_ENOMEM; + if (!kv) { + kv = apr_palloc(pool, sizeof(apr_json_kv_t)); + APR_RING_ELEM_INIT(kv, link); + APR_JSON_OBJECT_INSERT_TAIL(object->value.object, kv); + kv->k = apr_json_string_create(pool, key, klen); + apr_hash_set(hash, kv->k->value.string.p, kv->k->value.string.len, kv); } - return apr__json_object_set(object, k, val, pool); + kv->v = val; + + return APR_SUCCESS; } apr_json_kv_t *apr_json_object_get(apr_json_value_t *object, const char *key, apr_ssize_t klen) |