summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarsten Blees <karsten.blees@gmail.com>2015-06-30 16:34:13 +0200
committerJunio C Hamano <gitster@pobox.com>2015-06-30 11:01:59 -0700
commit7a64592cf8cc559d6043500b8e77d1fed07c5ec2 (patch)
treedb81b38ed7048d6df69aed9948284e7c86b9f294
parent351d06df519ee405a1926e0c6ee34d6a1dba6b46 (diff)
downloadgit-kb/config-unmap-before-renaming.tar.gz
config.c: fix writing config files on Windows network shareskb/config-unmap-before-renaming
Renaming to an existing file doesn't work on Windows network shares if the target file is open. munmap() the old config file before commit_lock_file. Signed-off-by: Karsten Blees <blees@dcon.de> Acked-by: Jeff King <peff@peff.net> Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--config.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/config.c b/config.c
index 27a73c8500..69824ebddb 100644
--- a/config.c
+++ b/config.c
@@ -2116,6 +2116,9 @@ int git_config_set_multivar_in_file(const char *config_filename,
contents_sz - copy_begin) <
contents_sz - copy_begin)
goto write_err_out;
+
+ munmap(contents, contents_sz);
+ contents = NULL;
}
if (commit_lock_file(lock) < 0) {