From b2e9d80956b5300c4bf29c12ea5726f77eaf813d Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Fri, 20 Oct 2023 12:07:32 +0200 Subject: [PATCH] hashmap: Add extra uncounted entry to returned array from hashmap_dump_sorted() This allows using the returned array as a strv. --- src/basic/hashmap.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/basic/hashmap.c b/src/basic/hashmap.c index ac1c7329788..894760ca609 100644 --- a/src/basic/hashmap.c +++ b/src/basic/hashmap.c @@ -2135,7 +2135,9 @@ int _hashmap_dump_sorted(HashmapBase *h, void ***ret, size_t *ret_n) { return 0; } - entries = new(struct hashmap_base_entry*, _hashmap_size(h)); + /* We append one more element than needed so that the resulting array can be used as a strv. We + * don't count this entry in the returned size. */ + entries = new(struct hashmap_base_entry*, _hashmap_size(h) + 1); if (!entries) return -ENOMEM; @@ -2143,6 +2145,7 @@ int _hashmap_dump_sorted(HashmapBase *h, void ***ret, size_t *ret_n) { entries[n++] = bucket_at(h, idx); assert(n == _hashmap_size(h)); + entries[n] = NULL; typesafe_qsort_r(entries, n, hashmap_entry_compare, h->hash_ops->compare); -- 2.47.3