[PATCH] cmd_config(): Make a copy of path obtained from git_path()
From: Michael Haggerty <hidden>
Date: 2016-06-15 23:02:57
Subsystem:
the rest · Maintainer:
Linus Torvalds
The strings returned by git_path() are recycled after a while. So make a copy of the config filename rather than holding onto the return value from git_path(). Signed-off-by: Michael Haggerty <redacted> --- This patch is an improvement by itself, and it also eases the merging to master of my fix for the incorrectly set config file executable bit [1]. [1] http://thread.gmane.org/gmane.comp.version-control.git/259644 builtin/config.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/builtin/config.c b/builtin/config.c
index 8cc2604..606a3c0 100644
--- a/builtin/config.c
+++ b/builtin/config.c@@ -568,8 +568,8 @@ int cmd_config(int argc, const char **argv, const char *prefix) } } else if (actions == ACTION_EDIT) { - const char *config_file = given_config_source.file ? - given_config_source.file : git_path("config"); + char *config_file; + check_argc(argc, 0, 0); if (!given_config_source.file && nongit) die("not in a git directory");
@@ -578,6 +578,8 @@ int cmd_config(int argc, const char **argv, const char *prefix) if (given_config_source.blob) die("editing blobs is not supported"); git_config(git_default_config, NULL); + config_file = xstrdup(given_config_source.file ? + given_config_source.file : git_path("config")); if (use_global_config) { int fd = open(config_file, O_CREAT | O_EXCL | O_WRONLY, 0666); if (fd) {
@@ -590,6 +592,7 @@ int cmd_config(int argc, const char **argv, const char *prefix) die_errno(_("cannot create configuration file %s"), config_file); } launch_editor(config_file, NULL, NULL); + free(config_file); } else if (actions == ACTION_SET) { int ret;
--
2.1.1