decorate.c: compact table when growing
authorKevin Bracey <kevin@bracey.fi>
Thu, 16 May 2013 15:32:27 +0000 (18:32 +0300)
committerJunio C Hamano <gitster@pobox.com>
Thu, 16 May 2013 18:51:08 +0000 (11:51 -0700)
When growing the table, take the opportunity to "compact" it by removing
entries with NULL decoration.

Users may have "removed" decorations by passing NULL to
insert_decoration. An object's table entry can't actually be removed
during normal operation, as it would break the linear hash collision
search. But we can remove NULL decoration entries when rebuilding the
table.

Signed-off-by: Kevin Bracey <kevin@bracey.fi>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
decorate.c
index 2f8a63e38881587fe29fcb72a5272ef54b9efa6e..7cb5d29a89a43ecf7e433db513b66184df3accb8 100644 (file)
@@ -49,7 +49,7 @@ static void grow_decoration(struct decoration *n)
                const struct object *base = old_hash[i].base;
                void *decoration = old_hash[i].decoration;
 
-               if (!base)
+               if (!decoration)
                        continue;
                insert_decoration(n, base, decoration);
        }