diff options
author | Junio C Hamano <gitster@pobox.com> | 2013-07-03 15:30:59 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-07-03 15:30:59 -0700 |
commit | 318e758f327c486a606ece48c5dfb5fa6e5d39d5 (patch) | |
tree | 5f127b8b570a11cf61311f99b24769a21c3b7ef5 | |
parent | b3bf469bf8d4cff6fbfef7db1c6f74b63906a317 (diff) | |
parent | 46ec510ac088ac2669e617a4c8c35e6218dabecc (diff) | |
download | git-318e758f327c486a606ece48c5dfb5fa6e5d39d5.tar.gz git-318e758f327c486a606ece48c5dfb5fa6e5d39d5.tar.xz |
Merge branch 'cb/log-follow-with-combined' into maint
"git log -c --follow $path" segfaulted upon hitting the commit that
renamed the $path being followed.
* cb/log-follow-with-combined:
fix segfault with git log -c --follow
-rw-r--r-- | combine-diff.c | 3 | ||||
-rwxr-xr-x | t/t4202-log.sh | 14 |
2 files changed, 17 insertions, 0 deletions
diff --git a/combine-diff.c b/combine-diff.c index 3e8bb1783..6dc06093d 100644 --- a/combine-diff.c +++ b/combine-diff.c @@ -1305,6 +1305,7 @@ void diff_tree_combined(const unsigned char *sha1, int i, num_paths, needsep, show_log_first, num_parent = parents->nr; diffopts = *opt; + diff_tree_setup_paths(diffopts.pathspec.raw, &diffopts); diffopts.output_format = DIFF_FORMAT_NO_OUTPUT; DIFF_OPT_SET(&diffopts, RECURSIVE); DIFF_OPT_CLR(&diffopts, ALLOW_EXTERNAL); @@ -1375,6 +1376,8 @@ void diff_tree_combined(const unsigned char *sha1, paths = paths->next; free(tmp); } + + diff_tree_release_paths(&diffopts); } void diff_tree_combined_merge(const struct commit *commit, int dense, diff --git a/t/t4202-log.sh b/t/t4202-log.sh index 9243a9799..cb03d2876 100755 --- a/t/t4202-log.sh +++ b/t/t4202-log.sh @@ -530,6 +530,20 @@ test_expect_success 'show added path under "--follow -M"' ' ) ' +test_expect_success 'git log -c --follow' ' + test_create_repo follow-c && + ( + cd follow-c && + test_commit initial file original && + git rm file && + test_commit rename file2 original && + git reset --hard initial && + test_commit modify file foo && + git merge -m merge rename && + git log -c --follow file2 + ) +' + cat >expect <<\EOF * commit COMMIT_OBJECT_NAME |\ Merge: MERGE_PARENTS |