diff options
author | René Scharfe <l.s.r@web.de> | 2017-02-10 20:42:28 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-02-13 12:06:08 -0800 |
commit | 7b4158a8d8d027491e6e2f7eff3789bd25e093d5 (patch) | |
tree | 7e5720fb483b8e70afd81f73402b974c86f41860 /builtin | |
parent | 3b9e3c2cede15057af3ff8076c45ad5f33829436 (diff) | |
download | git-7b4158a8d8d027491e6e2f7eff3789bd25e093d5.tar.gz git-7b4158a8d8d027491e6e2f7eff3789bd25e093d5.tar.xz |
ls-files: pass prefix length explicitly to prune_cache()
The function prune_cache() relies on the fact that it is only called on
max_prefix and sneakily uses the matching global variable max_prefix_len
directly. Tighten its interface by passing both the string and its
length as parameters. While at it move the NULL check into the function
to collect all cache-pruning related logic in one place.
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Reviewed-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/ls-files.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/builtin/ls-files.c b/builtin/ls-files.c index 159229081..18105ec7e 100644 --- a/builtin/ls-files.c +++ b/builtin/ls-files.c @@ -369,11 +369,14 @@ static void show_files(struct dir_struct *dir) /* * Prune the index to only contain stuff starting with "prefix" */ -static void prune_cache(const char *prefix) +static void prune_cache(const char *prefix, size_t prefixlen) { - int pos = cache_name_pos(prefix, max_prefix_len); + int pos; unsigned int first, last; + if (!prefix) + return; + pos = cache_name_pos(prefix, prefixlen); if (pos < 0) pos = -pos-1; memmove(active_cache, active_cache + pos, @@ -384,7 +387,7 @@ static void prune_cache(const char *prefix) while (last > first) { int next = (last + first) >> 1; const struct cache_entry *ce = active_cache[next]; - if (!strncmp(ce->name, prefix, max_prefix_len)) { + if (!strncmp(ce->name, prefix, prefixlen)) { first = next+1; continue; } @@ -641,8 +644,7 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix) show_killed || show_modified || show_resolve_undo)) show_cached = 1; - if (max_prefix) - prune_cache(max_prefix); + prune_cache(max_prefix, max_prefix_len); if (with_tree) { /* * Basic sanity check; show-stages and show-unmerged |