提交 96f6d3f6 编写于 作者: R René Scharfe 提交者: Junio C Hamano

ls-files: move only kept cache entries in prune_cache()

prune_cache() first identifies those entries at the start of the sorted
array that can be discarded.  Then it moves the rest of the entries up.
Last it identifies the unwanted trailing entries among the moved ones
and cuts them off.

Change the order: Identify both start *and* end of the range to keep
first and then move only those entries to the top.  The resulting code
is slightly shorter and a bit more efficient.
Signed-off-by: NRene Scharfe <l.s.r@web.de>
Reviewed-by: NBrandon Williams <bmwill@google.com>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 7b4158a8
......@@ -379,10 +379,7 @@ static void prune_cache(const char *prefix, size_t prefixlen)
pos = cache_name_pos(prefix, prefixlen);
if (pos < 0)
pos = -pos-1;
memmove(active_cache, active_cache + pos,
(active_nr - pos) * sizeof(struct cache_entry *));
active_nr -= pos;
first = 0;
first = pos;
last = active_nr;
while (last > first) {
int next = (last + first) >> 1;
......@@ -393,7 +390,9 @@ static void prune_cache(const char *prefix, size_t prefixlen)
}
last = next;
}
active_nr = last;
memmove(active_cache, active_cache + pos,
(last - pos) * sizeof(struct cache_entry *));
active_nr = last - pos;
}
/*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册