summaryrefslogtreecommitdiff
path: root/builtin-commit.c
diff options
context:
space:
mode:
authorStephen Boyd <bebarino@gmail.com>2009-05-23 18:53:10 (GMT)
committerJunio C Hamano <gitster@pobox.com>2009-05-23 22:45:52 (GMT)
commitaae94ffbc138181777a942ef18daf52606df833d (patch)
treede0b15a5bd3ce12e4bc8523d7635601363934c33 /builtin-commit.c
parent213195185c8aa09d6192b85a3f78bf46f19f51a4 (diff)
downloadgit-aae94ffbc138181777a942ef18daf52606df833d.zip
git-aae94ffbc138181777a942ef18daf52606df833d.tar.gz
git-aae94ffbc138181777a942ef18daf52606df833d.tar.bz2
commit: -F overrides -t
Commit dbd0f5c7 (Files given on the command line are relative to $cwd, 2008-08-06) introduced parse_options_fix_filename() as a quick fix for filename arguments used in the parse options API. git-commit was still broken. This means git commit -F log -t temp in a subdirectory would make git think the log message should be taken from temp instead of log. This is because parse_options_fix_filename() calls prefix_filename() which uses a single static char buffer to do its work. Making two calls with two char pointers causes the pointers to alias. To prevent aliasing, we duplicate the string returned by parse_options_fix_filename(). Signed-off-by: Stephen Boyd <bebarino@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin-commit.c')
-rw-r--r--builtin-commit.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/builtin-commit.c b/builtin-commit.c
index 81371b1..baaa75c 100644
--- a/builtin-commit.c
+++ b/builtin-commit.c
@@ -699,7 +699,11 @@ static int parse_and_validate_options(int argc, const char *argv[],
argc = parse_options(argc, argv, builtin_commit_options, usage, 0);
logfile = parse_options_fix_filename(prefix, logfile);
+ if (logfile)
+ logfile = xstrdup(logfile);
template_file = parse_options_fix_filename(prefix, template_file);
+ if (template_file)
+ template_file = xstrdup(template_file);
if (force_author && !strchr(force_author, '>'))
force_author = find_author_by_nickname(force_author);