Merge branch 'jk/clear-delta-base-cache-fix'
A crashing bug introduced in v2.11 timeframe has been found (it is triggerable only in fast-import) and fixed. * jk/clear-delta-base-cache-fix: clear_delta_base_cache(): don't modify hashmap while iteratingmaint
						commit
						c54ba283fa
					
				|  | @ -188,7 +188,9 @@ Returns the removed entry, or NULL if not found. | ||||||
| `void *hashmap_iter_next(struct hashmap_iter *iter)`:: | `void *hashmap_iter_next(struct hashmap_iter *iter)`:: | ||||||
| `void *hashmap_iter_first(struct hashmap *map, struct hashmap_iter *iter)`:: | `void *hashmap_iter_first(struct hashmap *map, struct hashmap_iter *iter)`:: | ||||||
|  |  | ||||||
| 	Used to iterate over all entries of a hashmap. | 	Used to iterate over all entries of a hashmap. Note that it is | ||||||
|  | 	not safe to add or remove entries to the hashmap while | ||||||
|  | 	iterating. | ||||||
| + | + | ||||||
| `hashmap_iter_init` initializes a `hashmap_iter` structure. | `hashmap_iter_init` initializes a `hashmap_iter` structure. | ||||||
| + | + | ||||||
|  |  | ||||||
|  | @ -2371,11 +2371,10 @@ static inline void release_delta_base_cache(struct delta_base_cache_entry *ent) | ||||||
|  |  | ||||||
| void clear_delta_base_cache(void) | void clear_delta_base_cache(void) | ||||||
| { | { | ||||||
| 	struct hashmap_iter iter; | 	struct list_head *lru, *tmp; | ||||||
| 	struct delta_base_cache_entry *entry; | 	list_for_each_safe(lru, tmp, &delta_base_cache_lru) { | ||||||
| 	for (entry = hashmap_iter_first(&delta_base_cache, &iter); | 		struct delta_base_cache_entry *entry = | ||||||
| 	     entry; | 			list_entry(lru, struct delta_base_cache_entry, lru); | ||||||
| 	     entry = hashmap_iter_next(&iter)) { |  | ||||||
| 		release_delta_base_cache(entry); | 		release_delta_base_cache(entry); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Junio C Hamano
						Junio C Hamano