cache-tree: protect against "git prune".
We reused the cache-tree data without verifying the tree object still exists. Recompute in cache_tree_update() an otherwise valid cache-tree entry when the tree object disappeared. This is not usually a problem, but theoretically without this fix things can break when the user does something like this: - read-index from a side branch - write-tree the result - remove the side branch with "git branch -D" - remove the unreachable objects with "git prune" - write-tree what is in the index. Signed-off-by: Junio C Hamano <junkio@cox.net>maint
							parent
							
								
									17448209f5
								
							
						
					
					
						commit
						dd0c34c46b
					
				|  | @ -177,7 +177,7 @@ static int update_one(struct cache_tree *it, | ||||||
| 	char *buffer; | 	char *buffer; | ||||||
| 	int i; | 	int i; | ||||||
|  |  | ||||||
| 	if (0 <= it->entry_count) | 	if (0 <= it->entry_count && has_sha1_file(it->sha1)) | ||||||
| 		return it->entry_count; | 		return it->entry_count; | ||||||
|  |  | ||||||
| 	/* | 	/* | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Junio C Hamano
						Junio C Hamano