Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'tree-walk.c')
-rw-r--r--tree-walk.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/tree-walk.c b/tree-walk.c
index ba106152ef..4610f77383 100644
--- a/tree-walk.c
+++ b/tree-walk.c
@@ -175,27 +175,27 @@ void setup_traverse_info(struct traverse_info *info, const char *base)
if (pathlen && base[pathlen-1] == '/')
pathlen--;
info->pathlen = pathlen ? pathlen + 1 : 0;
- info->name.path = base;
- info->name.pathlen = pathlen;
+ info->name = base;
+ info->namelen = pathlen;
if (pathlen)
info->prev = &dummy;
}
-char *make_traverse_path(char *path, const struct traverse_info *info, const struct name_entry *n)
+char *make_traverse_path(char *path, const struct traverse_info *info,
+ const char *name, size_t namelen)
{
- int len = tree_entry_len(n);
int pathlen = info->pathlen;
- path[pathlen + len] = 0;
+ path[pathlen + namelen] = 0;
for (;;) {
- memcpy(path + pathlen, n->path, len);
+ memcpy(path + pathlen, name, namelen);
if (!pathlen)
break;
path[--pathlen] = '/';
- n = &info->name;
- len = tree_entry_len(n);
+ name = info->name;
+ namelen = info->namelen;
info = info->prev;
- pathlen -= len;
+ pathlen -= namelen;
}
return path;
}
@@ -397,12 +397,13 @@ int traverse_trees(struct index_state *istate,
if (info->prev) {
strbuf_grow(&base, info->pathlen);
- make_traverse_path(base.buf, info->prev, &info->name);
+ make_traverse_path(base.buf, info->prev, info->name,
+ info->namelen);
base.buf[info->pathlen-1] = '/';
strbuf_setlen(&base, info->pathlen);
traverse_path = xstrndup(base.buf, info->pathlen);
} else {
- traverse_path = xstrndup(info->name.path, info->pathlen);
+ traverse_path = xstrndup(info->name, info->pathlen);
}
info->traverse_path = traverse_path;
for (;;) {