mirror of
https://github.com/git/git.git
synced 2026-01-13 04:06:01 +00:00
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 https://github.com/git-for-windows/git/issues/1315 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
4
diff.c
4
diff.c
@@ -4207,6 +4207,10 @@ static void run_external_diff(const char *pgm,
|
||||
argv_array_pushf(&env, "GIT_DIFF_PATH_COUNTER=%d", ++o->diff_path_counter);
|
||||
argv_array_pushf(&env, "GIT_DIFF_PATH_TOTAL=%d", q->nr);
|
||||
|
||||
if (one && one->should_munmap)
|
||||
diff_free_filespec_data(one);
|
||||
if (two && two->should_munmap)
|
||||
diff_free_filespec_data(two);
|
||||
if (run_command_v_opt_cd_env(argv.argv, RUN_USING_SHELL, NULL, env.argv))
|
||||
die(_("external diff died, stopping at %s"), name);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user