clear_delta_base_cache_entry: use a more descriptive name

The delta base cache entries are stored in a fixed-length hash table. So the way to remove an entry is to "clear" the slot in the table, and that is what this function does. However, the name is a leaky abstraction. If we were to change the hash table implementation, it would no longer be about "clearing". We should name it after _what_ it does, not _how_ it does it. I.e., something like "remove" instead of "clear". But that does not tell the whole story, either. The subtle thing about this function is that it removes the entry, but does not free the entry data. So a more descriptive name is "detach"; we give ownership of the data buffer to the caller, and remove any other resources. This patch uses the name detach_delta_base_cache_entry(). We could further model this after functions like strbuf_detach(), which pass back all of the detached information. However, since there are so many bits of information in the struct (the data, the size, the type), and so few callers (only one), it's not worth that awkwardness. The name change and a comment can make the intent clear. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Aug 22, 2016 at 17:57 UTC 4a5397ca79f895e84b3a28abe3ab2e8a0faf3510
1 file changed +7 -2
sha1_file.c
+7 -2
@@ -2120,7 +2120,12 @@ static int in_delta_base_cache(struct packed_git *p, off_t base_offset)
2120 return eq_delta_base_cache_entry(ent, p, base_offset);
2121 }
2122
2123 -static void clear_delta_base_cache_entry(struct delta_base_cache_entry *ent)
2123 +/*
2124 + * Remove the entry from the cache, but do _not_ free the associated
2125 + * entry data. The caller takes ownership of the "data" buffer, and
2126 + * should copy out any fields it wants before detaching.
2127 + */
2128 +static void detach_delta_base_cache_entry(struct delta_base_cache_entry *ent)
2129 {
2130 ent->data = NULL;
2131 ent->lru.next->prev = ent->lru.prev;
@@ -2243,7 +2248,7 @@ void *unpack_entry(struct packed_git *p, off_t obj_offset,
2248 type = ent->type;
2249 data = ent->data;
2250 size = ent->size;
2246 - clear_delta_base_cache_entry(ent);
2251 + detach_delta_base_cache_entry(ent);
2252 base_from_cache = 1;
2253 break;
2254 }