summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmanuele Torre <torreemanuele6@gmail.com>2024-03-28 05:19:30 +0100
committerEmanuele Torre <torreemanuele6@gmail.com>2024-03-28 12:12:39 +0100
commitea78b5a0309b75efbe2e956e26be7a93f316b3b1 (patch)
tree6fe7945c8f40278615e2804707d7d837a274aef1
parent22a03e9e06e7a812c6aed16d3e2bc7e091c119a6 (diff)
jv_array_indexes: remove a bunch of unnecessary copies/gets
-rw-r--r--src/jv.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/jv.c b/src/jv.c
index e23d8ec1..2468bad5 100644
--- a/src/jv.c
+++ b/src/jv.c
@@ -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));