diff options
author | Jeff King <peff@peff.net> | 2016-08-22 17:57:53 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-08-23 14:45:29 -0700 |
commit | 4a5397ca79f895e84b3a28abe3ab2e8a0faf3510 (patch) | |
tree | 00b40f45de7b8f4ae74e3afce5b3d0e7e59c1d49 | |
parent | cache_or_unpack_entry: drop keep_cache parameter (diff) | |
download | tgif-4a5397ca79f895e84b3a28abe3ab2e8a0faf3510.tar.xz |
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>
-rw-r--r-- | sha1_file.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sha1_file.c b/sha1_file.c index 23339115cb..1d0810c308 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -2120,7 +2120,12 @@ static int in_delta_base_cache(struct packed_git *p, off_t base_offset) return eq_delta_base_cache_entry(ent, p, base_offset); } -static void clear_delta_base_cache_entry(struct delta_base_cache_entry *ent) +/* + * Remove the entry from the cache, but do _not_ free the associated + * entry data. The caller takes ownership of the "data" buffer, and + * should copy out any fields it wants before detaching. + */ +static void detach_delta_base_cache_entry(struct delta_base_cache_entry *ent) { ent->data = NULL; ent->lru.next->prev = ent->lru.prev; @@ -2243,7 +2248,7 @@ void *unpack_entry(struct packed_git *p, off_t obj_offset, type = ent->type; data = ent->data; size = ent->size; - clear_delta_base_cache_entry(ent); + detach_delta_base_cache_entry(ent); base_from_cache = 1; break; } |