revisions API: add a TODO for diff_free(&revs->diffopt)
Add a TODO comment indicating that we should release "diffopt" in
release_revisions(). In a preceding commit we started releasing the
"pruning" member of the same type, but handling "diffopt" will require
us to untangle the "no_free" conditions I added in e900d494dc (diff:
add an API for deferred freeing, 2021-02-11).
Let's leave a TODO comment to that effect, and so that we don't forget
refactor code that was changed to use release_revisions() in earlier
commits to stop using the "diffopt" member after a call to
release_revisions(). This works currently, but would become a logic
error as soon as we started freeing "diffopt". Doing that change now
doesn't harm anything, and future-proofs us against a later change to
release_revisions().
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
			
			
				maint
			
			
		
							parent
							
								
									ae1b383dfa
								
							
						
					
					
						commit
						54c8a7c379
					
				|  | @ -651,6 +651,7 @@ int index_differs_from(struct repository *r, | |||
| { | ||||
| 	struct rev_info rev; | ||||
| 	struct setup_revision_opt opt; | ||||
| 	unsigned has_changes; | ||||
|  | ||||
| 	repo_init_revisions(r, &rev, NULL); | ||||
| 	memset(&opt, 0, sizeof(opt)); | ||||
|  | @ -662,8 +663,9 @@ int index_differs_from(struct repository *r, | |||
| 		diff_flags_or(&rev.diffopt.flags, flags); | ||||
| 	rev.diffopt.ita_invisible_in_index = ita_invisible_in_index; | ||||
| 	run_diff_index(&rev, 1); | ||||
| 	has_changes = rev.diffopt.flags.has_changes; | ||||
| 	release_revisions(&rev); | ||||
| 	return (rev.diffopt.flags.has_changes != 0); | ||||
| 	return (has_changes != 0); | ||||
| } | ||||
|  | ||||
| static struct strbuf *idiff_prefix_cb(struct diff_options *opt, void *data) | ||||
|  |  | |||
|  | @ -2956,6 +2956,7 @@ void release_revisions(struct rev_info *revs) | |||
| 	date_mode_release(&revs->date_mode); | ||||
| 	release_revisions_mailmap(revs->mailmap); | ||||
| 	free_grep_patterns(&revs->grep_filter); | ||||
| 	/* TODO (need to handle "no_free"): diff_free(&revs->diffopt) */ | ||||
| 	diff_free(&revs->pruning); | ||||
| 	reflog_walk_info_release(revs->reflog_info); | ||||
| 	release_revisions_topo_walk_info(revs->topo_walk_info); | ||||
|  |  | |||
|  | @ -2545,8 +2545,9 @@ int has_unstaged_changes(struct repository *r, int ignore_submodules) | |||
| 	rev_info.diffopt.flags.quick = 1; | ||||
| 	diff_setup_done(&rev_info.diffopt); | ||||
| 	result = run_diff_files(&rev_info, 0); | ||||
| 	result = diff_result_code(&rev_info.diffopt, result); | ||||
| 	release_revisions(&rev_info); | ||||
| 	return diff_result_code(&rev_info.diffopt, result); | ||||
| 	return result; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  | @ -2578,8 +2579,9 @@ int has_uncommitted_changes(struct repository *r, | |||
|  | ||||
| 	diff_setup_done(&rev_info.diffopt); | ||||
| 	result = run_diff_index(&rev_info, 1); | ||||
| 	result = diff_result_code(&rev_info.diffopt, result); | ||||
| 	release_revisions(&rev_info); | ||||
| 	return diff_result_code(&rev_info.diffopt, result); | ||||
| 	return result; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Ævar Arnfjörð Bjarmason
						Ævar Arnfjörð Bjarmason