From 1b556315afdafde27a935f711efe212d2d988842 Mon Sep 17 00:00:00 2001 From: Stephen Roantree Date: Thu, 25 Oct 2012 06:29:23 -0700 Subject: [PATCH] Remove redundant code from jv_object_contains --- jv.c | 26 +++++--------------------- 1 file 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); - } + 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)); - 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])); - - 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;