diff options
author | Stephen Boyd <bebarino@gmail.com> | 2009-05-23 11:53:10 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-05-23 15:45:52 -0700 |
commit | aae94ffbc138181777a942ef18daf52606df833d (patch) | |
tree | de0b15a5bd3ce12e4bc8523d7635601363934c33 /builtin-commit.c | |
parent | 213195185c8aa09d6192b85a3f78bf46f19f51a4 (diff) | |
download | git-aae94ffbc138181777a942ef18daf52606df833d.tar.gz |
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.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/builtin-commit.c b/builtin-commit.c index 81371b1d26..baaa75cf90 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); |