Fix tree-walking compare_entry() in the presense of --prefix
When we make the "root" tree-walk info entry have a pathname in it, we need to have a ->prev pointer so that compare_entry will actually notice and traverse into the root. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
01904572a5
commit
bcbe5a515e
@ -107,6 +107,7 @@ int tree_entry(struct tree_desc *desc, struct name_entry *entry)
|
|||||||
void setup_traverse_info(struct traverse_info *info, const char *base)
|
void setup_traverse_info(struct traverse_info *info, const char *base)
|
||||||
{
|
{
|
||||||
int pathlen = strlen(base);
|
int pathlen = strlen(base);
|
||||||
|
static struct traverse_info dummy;
|
||||||
|
|
||||||
memset(info, 0, sizeof(*info));
|
memset(info, 0, sizeof(*info));
|
||||||
if (pathlen && base[pathlen-1] == '/')
|
if (pathlen && base[pathlen-1] == '/')
|
||||||
@ -114,6 +115,8 @@ void setup_traverse_info(struct traverse_info *info, const char *base)
|
|||||||
info->pathlen = pathlen ? pathlen + 1 : 0;
|
info->pathlen = pathlen ? pathlen + 1 : 0;
|
||||||
info->name.path = base;
|
info->name.path = base;
|
||||||
info->name.sha1 = (void *)(base + pathlen + 1);
|
info->name.sha1 = (void *)(base + pathlen + 1);
|
||||||
|
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 struct name_entry *n)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user