Skip to content

Commit ab58c72

Browse files
dschoGit for Windows Build Agent
authored and
Git for Windows Build Agent
committed
diff: munmap() file contents before running external diff
When running an external diff from, say, a diff tool, it is safe to assume that we want to write the files in question. On Windows, that means that there cannot be any other process holding an open handle to said files. So let's make sure that `git diff` itself is not holding any open handle to the files in question. This fixes #1315 Signed-off-by: Johannes Schindelin <[email protected]>
1 parent c77fb87 commit ab58c72

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

diff.c

+4
Original file line numberDiff line numberDiff line change
@@ -4206,6 +4206,10 @@ static void run_external_diff(const char *pgm,
42064206
argv_array_pushf(&env, "GIT_DIFF_PATH_COUNTER=%d", ++o->diff_path_counter);
42074207
argv_array_pushf(&env, "GIT_DIFF_PATH_TOTAL=%d", q->nr);
42084208

4209+
if (one && one->should_munmap)
4210+
diff_free_filespec_data(one);
4211+
if (two && two->should_munmap)
4212+
diff_free_filespec_data(two);
42094213
if (run_command_v_opt_cd_env(argv.argv, RUN_USING_SHELL, NULL, env.argv))
42104214
die(_("external diff died, stopping at %s"), name);
42114215

0 commit comments

Comments
 (0)