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>maint
							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…
	
		Reference in New Issue
	
	 Linus Torvalds
						Linus Torvalds