Fix a crash on group_by of empty list. Fixes #208.
This commit is contained in:
1 parent
0feeb7d0d4
commit
8d4748c8df
2 files changed
+19
-13
No files matched your search
@@ -545,21 +545,23 @@ jv jv_group(jv objects, jv keys) {
|
|||||||
int n = jv_array_length(jv_copy(objects));
|
int n = jv_array_length(jv_copy(objects));
|
||||||
struct sort_entry* entries = sort_items(objects, keys);
|
struct sort_entry* entries = sort_items(objects, keys);
|
||||||
jv ret = jv_array();
|
jv ret = jv_array();
|
||||||
jv curr_key = entries[0].key;
|
if (n > 0) {
|
||||||
jv group = jv_array_append(jv_array(), entries[0].object);
|
jv curr_key = entries[0].key;
|
||||||
for (int i = 1; i < n; i++) {
|
jv group = jv_array_append(jv_array(), entries[0].object);
|
||||||
if (jv_equal(jv_copy(curr_key), jv_copy(entries[i].key))) {
|
for (int i = 1; i < n; i++) {
|
||||||
jv_free(entries[i].key);
|
if (jv_equal(jv_copy(curr_key), jv_copy(entries[i].key))) {
|
||||||
} else {
|
jv_free(entries[i].key);
|
||||||
jv_free(curr_key);
|
} else {
|
||||||
curr_key = entries[i].key;
|
jv_free(curr_key);
|
||||||
ret = jv_array_append(ret, group);
|
curr_key = entries[i].key;
|
||||||
group = jv_array();
|
ret = jv_array_append(ret, group);
|
||||||
|
group = jv_array();
|
||||||
|
}
|
||||||
|
group = jv_array_append(group, entries[i].object);
|
||||||
}
|
}
|
||||||
group = jv_array_append(group, entries[i].object);
|
jv_free(curr_key);
|
||||||
|
ret = jv_array_append(ret, group);
|
||||||
}
|
}
|
||||||
jv_free(curr_key);
|
|
||||||
ret = jv_array_append(ret, group);
|
|
||||||
jv_mem_free(entries);
|
jv_mem_free(entries);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -610,6 +610,10 @@ unique
|
|||||||
[1,2,5,3,5,3,1,3]
|
[1,2,5,3,5,3,1,3]
|
||||||
[1,2,3,5]
|
[1,2,3,5]
|
||||||
|
|
||||||
|
unique
|
||||||
|
[]
|
||||||
|
[]
|
||||||
|
|
||||||
[min, max, min_by(.[1]), max_by(.[1]), min_by(.[2]), max_by(.[2])]
|
[min, max, min_by(.[1]), max_by(.[1]), min_by(.[2]), max_by(.[2])]
|
||||||
[[4,2,"a"],[3,1,"a"],[2,4,"a"],[1,3,"a"]]
|
[[4,2,"a"],[3,1,"a"],[2,4,"a"],[1,3,"a"]]
|
||||||
[[1,3,"a"],[4,2,"a"],[3,1,"a"],[2,4,"a"],[4,2,"a"],[1,3,"a"]]
|
[[1,3,"a"],[4,2,"a"],[3,1,"a"],[2,4,"a"],[4,2,"a"],[1,3,"a"]]
|
||||||
|
|||||||
Reference in new issue
Block a user