From: Daan De Meyer Date: Fri, 20 Oct 2023 10:07:32 +0000 (+0200) Subject: hashmap: Add extra uncounted entry to returned array from hashmap_dump_sorted() X-Git-Tag: v255-rc1~182^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b2e9d80956b5300c4bf29c12ea5726f77eaf813d;p=thirdparty%2Fsystemd.git hashmap: Add extra uncounted entry to returned array from hashmap_dump_sorted() This allows using the returned array as a strv. --- 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);