summaryrefslogtreecommitdiffstats
path: root/jv.c
diff options
context:
space:
mode:
authorStephen Roantree <stroantree@gmail.com>2012-10-25 06:29:23 -0700
committerStephen Roantree <stroantree@gmail.com>2012-10-25 06:29:23 -0700
commit1b556315afdafde27a935f711efe212d2d988842 (patch)
treeef6ce6b9f2dfc9766bd0054cc562e3fdedbb3a42 /jv.c
parentecc8998d38ddd7da5a7f8237b883dae74ffe38cb (diff)
Remove redundant code from jv_object_contains
Diffstat (limited to 'jv.c')
-rw-r--r--jv.c26
1 files changed, 5 insertions, 21 deletions
diff --git a/jv.c b/jv.c
index 45df882e..77937a8d 100644
--- a/jv.c
+++ b/jv.c
@@ -890,33 +890,17 @@ int jv_object_contains(jv a, jv b) {
assert(jv_get_kind(b) == JV_KIND_OBJECT);
int r = 1;
- int nkeys = jv_object_length(jv_copy(b));
- jv* keys = malloc(sizeof(jv) * nkeys);
- int kidx = 0;
jv_object_foreach(i, b) {
- keys[kidx++] = jv_object_iter_key(b, i);
- }
-
- for (int i=0; i < nkeys; i++) {
- jv a_val = jv_object_get(jv_copy(a), jv_copy(keys[i]));
- jv b_val = jv_object_get(jv_copy(b), jv_copy(keys[i]));
+ jv key = jv_object_iter_key(b, i);
+ jv a_val = jv_object_get(jv_copy(a), jv_copy(key));
+ jv b_val = jv_object_get(jv_copy(b), jv_copy(key));
- if (!(jv_get_kind(a_val) == jv_get_kind(b_val)
- && jv_contains(jv_copy(a_val), jv_copy(b_val)))) {
- r = 0;
- }
-
- jv_free(a_val);
- jv_free(b_val);
+ r = jv_contains(a_val, b_val);
+ jv_free(key);
if (!r) break;
}
- for (int i=0; i < nkeys; i++) {
- jv_free(keys[i]);
- }
- free(keys);
-
jv_free(a);
jv_free(b);
return r;