Works as advertised. Tests also pass. Thanks, Zbyszek On Mon, Sep 27, 2010 at 12:29:45PM -0500, Brandon Casey wrote: > From: Brandon Casey <drafnel@xxxxxxxxx> > > cherry-pick will segfault when transplanting a root commit if the --ff > option is used. This happens because the "parent" pointer is set to NULL > when the commit being cherry-picked has no parents. Later, when "parent" > is dereferenced, the cherry-pick segfaults. > > Fix this by checking whether "parent" is NULL before dereferencing it and > add a test for this case of cherry-picking a root commit with --ff. > > Reported-by: Zbyszek Szmek <zbyszek@xxxxxxxxx> > Signed-off-by: Brandon Casey <casey@xxxxxxxxxxxxxxx> > --- > builtin/revert.c | 2 +- > t/t3506-cherry-pick-ff.sh | 10 ++++++++++ > 2 files changed, 11 insertions(+), 1 deletions(-) > > diff --git a/builtin/revert.c b/builtin/revert.c > index 4b47ace..57b51e4 100644 > --- a/builtin/revert.c > +++ b/builtin/revert.c > @@ -442,7 +442,7 @@ static int do_pick_commit(void) > else > parent = commit->parents->item; > > - if (allow_ff && !hashcmp(parent->object.sha1, head)) > + if (allow_ff && parent && !hashcmp(parent->object.sha1, head)) > return fast_forward_to(commit->object.sha1, head); > > if (parent && parse_commit(parent) < 0) > diff --git a/t/t3506-cherry-pick-ff.sh b/t/t3506-cherry-pick-ff.sh > index e17ae71..51ca391 100755 > --- a/t/t3506-cherry-pick-ff.sh > +++ b/t/t3506-cherry-pick-ff.sh > @@ -95,4 +95,14 @@ test_expect_success 'cherry pick a merge relative to nonexistent parent with --f > test_must_fail git cherry-pick --ff -m 3 C > ' > > +test_expect_success 'cherry pick a root commit with --ff' ' > + git reset --hard first -- && > + git rm file1 && > + echo first >file2 && > + git add file2 && > + git commit --amend -m "file2" && > + git cherry-pick --ff first && > + test "$(git rev-parse --verify HEAD)" = "1df192cd8bc58a2b275d842cede4d221ad9000d1" > +' > + > test_done > -- > 1.7.3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html