From: René Scharfe Date: Tue, 7 Feb 2017 22:04:25 +0000 (+0100) Subject: dir: avoid allocation in fill_directory() X-Git-Tag: v2.12.0-rc1~2^2 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/bec5ab8997c2391fa2241520f52f301397ebd538 dir: avoid allocation in fill_directory() Pass the match member of the first pathspec item directly to read_directory() instead of using common_prefix() to duplicate it first, thus avoiding memory duplication, strlen(3) and free(3). Signed-off-by: Rene Scharfe Signed-off-by: Junio C Hamano --- diff --git a/dir.c b/dir.c index 65c3e681b8..4541f9e146 100644 --- a/dir.c +++ b/dir.c @@ -174,20 +174,19 @@ char *common_prefix(const struct pathspec *pathspec) int fill_directory(struct dir_struct *dir, const struct pathspec *pathspec) { - char *prefix; + const char *prefix; size_t prefix_len; /* * Calculate common prefix for the pathspec, and * use that to optimize the directory walk */ - prefix = common_prefix(pathspec); - prefix_len = prefix ? strlen(prefix) : 0; + prefix_len = common_prefix_len(pathspec); + prefix = prefix_len ? pathspec->items[0].match : ""; /* Read the directory and prune it */ read_directory(dir, prefix, prefix_len, pathspec); - free(prefix); return prefix_len; }