summaryrefslogtreecommitdiff
path: root/json/apr_json.c
diff options
context:
space:
mode:
authorminfrin <minfrin@13f79535-47bb-0310-9956-ffa450edef68>2018-09-01 10:01:21 +0000
committerminfrin <minfrin@13f79535-47bb-0310-9956-ffa450edef68>2018-09-01 10:01:21 +0000
commitfc41a6828ddbade7285872f9c8af23e3c2fb961d (patch)
tree90bb29a4ce2e4984bfd75bed83fa433335864645 /json/apr_json.c
parent6e8f37f8021a2b57c5ae500425347788840708b7 (diff)
downloadlibapr-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.c54
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)