From: Junio C Hamano <gitster@pobox.com>
To: Seyi Kuforiji <kuforiji98@gmail.com>
Cc: git@vger.kernel.org, ps@pks.im
Subject: Re: [PATCH v2 1/5] oidmap: make entry cleanup explicit in oidmap_clear
Date: Mon, 02 Mar 2026 14:23:32 -0800 [thread overview]
Message-ID: <xmqqfr6hyior.fsf@gitster.g> (raw)
In-Reply-To: <20260302200018.75731-2-kuforiji98@gmail.com> (Seyi Kuforiji's message of "Mon, 2 Mar 2026 21:00:13 +0100")
Seyi Kuforiji <kuforiji98@gmail.com> writes:
> void oidmap_clear(struct oidmap *map, int free_entries)
> {
> - if (!map)
> + oidmap_clear_with_free(map,
> + free_entries ? free : NULL);
> +}
> +
> +void oidmap_clear_with_free(struct oidmap *map,
> + oidmap_free_fn free_fn)
Made me briefly wonder if passing "void free(void *)" or NULL as
oidmap_free_fn would be flagged by the compilers as suspicious, but
"typedef void (*oidmap_free_fn)(void *);" is obviously compatible
with both, so it is good.
> +{
> + struct hashmap_iter iter;
> + struct hashmap_entry *e;
> +
> + if (!map || !map->map.cmpfn)
> return;
The first half prepares our oidmap_clear() to be fed a NULL map, but
what about the new condition? Where did it come from? What makes
it suddenly necessary that in order to "clear" an oidmap you already
have to have defined cmpfn?
> - /* TODO: make oidmap itself not depend on struct layouts */
> - hashmap_clear_(&map->map, free_entries ? 0 : -1);
This is now achieved by the use of container_of(), right? Nice.
> + hashmap_iter_init(&map->map, &iter);
> + while ((e = hashmap_iter_next(&iter))) {
> + struct oidmap_entry *entry =
> + container_of(e, struct oidmap_entry, internal_entry);
> + if (free_fn)
> + free_fn(entry);
> + }
> +
> + hashmap_clear(&map->map);
> }
next prev parent reply other threads:[~2026-03-02 22:23 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-27 23:42 [PATCH 0/5] oidmap: migrate cleanup to oidmap_clear_with_free() Seyi Kuforiji
2026-02-27 23:42 ` [PATCH 1/5] oidmap: make entry cleanup explicit in oidmap_clear Seyi Kuforiji
2026-02-27 23:42 ` [PATCH 2/5] builtin/rev-list: migrate missing_objects cleanup to oidmap_clear_with_free() Seyi Kuforiji
2026-02-28 0:09 ` Junio C Hamano
2026-02-27 23:42 ` [PATCH 3/5] list-objects-filter: use oidmap_clear_with_free() for cleanup Seyi Kuforiji
2026-02-27 23:42 ` [PATCH 4/5] odb: use oidmap_clear_with_free() to release replace_map entries Seyi Kuforiji
2026-02-27 23:42 ` [PATCH 5/5] sequencer: use oidmap_clear_with_free() for string_entry cleanup Seyi Kuforiji
2026-03-02 20:00 ` [PATCH v2 0/5] oidmap: migrate cleanup to oidmap_clear_with_free() Seyi Kuforiji
2026-03-02 20:00 ` [PATCH v2 1/5] oidmap: make entry cleanup explicit in oidmap_clear Seyi Kuforiji
2026-03-02 22:23 ` Junio C Hamano [this message]
2026-03-02 20:00 ` [PATCH v2 2/5] builtin/rev-list: migrate missing_objects cleanup to oidmap_clear_with_free() Seyi Kuforiji
2026-03-02 22:26 ` Junio C Hamano
2026-03-04 6:57 ` Patrick Steinhardt
2026-03-02 20:00 ` [PATCH v2 3/5] list-objects-filter: use oidmap_clear_with_free() for cleanup Seyi Kuforiji
2026-03-02 22:30 ` Junio C Hamano
2026-03-04 6:57 ` Patrick Steinhardt
2026-03-04 15:31 ` Junio C Hamano
2026-03-04 19:29 ` Seyi Kuforiji
2026-03-04 20:30 ` Junio C Hamano
2026-03-04 21:43 ` Junio C Hamano
2026-03-02 20:00 ` [PATCH v2 4/5] odb: use oidmap_clear_with_free() to release replace_map entries Seyi Kuforiji
2026-03-02 22:35 ` Junio C Hamano
2026-03-02 20:00 ` [PATCH v2 5/5] sequencer: use oidmap_clear_with_free() for string_entry cleanup Seyi Kuforiji
2026-03-02 22:38 ` Junio C Hamano
2026-03-04 6:57 ` Patrick Steinhardt
2026-03-05 10:05 ` [PATCH v3 0/2] oidmap: migrate cleanup to oidmap_clear_with_free() Seyi Kuforiji
2026-03-05 10:05 ` [PATCH v3 1/2] oidmap: make entry cleanup explicit in oidmap_clear Seyi Kuforiji
2026-03-05 10:05 ` [PATCH v3 2/2] builtin/rev-list: migrate missing_objects cleanup to oidmap_clear_with_free() Seyi Kuforiji
2026-03-05 14:27 ` [PATCH v3 0/2] oidmap: migrate " Patrick Steinhardt
2026-03-05 19:17 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqfr6hyior.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=kuforiji98@gmail.com \
--cc=ps@pks.im \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox