diff options
author | Emanuele Torre <torreemanuele6@gmail.com> | 2024-03-28 05:19:30 +0100 |
---|---|---|
committer | Emanuele Torre <torreemanuele6@gmail.com> | 2024-03-28 12:12:39 +0100 |
commit | ea78b5a0309b75efbe2e956e26be7a93f316b3b1 (patch) | |
tree | 6fe7945c8f40278615e2804707d7d837a274aef1 | |
parent | 22a03e9e06e7a812c6aed16d3e2bc7e091c119a6 (diff) |
jv_array_indexes: remove a bunch of unnecessary copies/gets
-rw-r--r-- | src/jv.c | 7 |
1 files changed, 3 insertions, 4 deletions
@@ -1025,14 +1025,13 @@ jv jv_array_slice(jv a, int start, int end) { jv jv_array_indexes(jv a, jv b) { jv res = jv_array(); int idx = -1; - jv_array_foreach(a, ai, aelem) { - jv_free(aelem); + int alen = jv_array_length(jv_copy(a)); + for (int ai = 0; ai < alen; ++ai) { jv_array_foreach(b, bi, belem) { - if (!jv_equal(jv_array_get(jv_copy(a), ai + bi), jv_copy(belem))) + if (!jv_equal(jv_array_get(jv_copy(a), ai + bi), belem)) idx = -1; else if (bi == 0 && idx == -1) idx = ai; - jv_free(belem); } if (idx > -1) res = jv_array_append(res, jv_number(idx)); |