From 88cfe61497dbf1f568e1c606f8b1c791602c71f4 Mon Sep 17 00:00:00 2001 From: Stefan Huber Date: Wed, 24 Aug 2016 01:20:39 +0200 Subject: [PATCH] git_checkout_tree options fix According to the reference the git_checkout_tree and git_checkout_head functions should accept NULL in the opts field This was broken since the opts field was dereferenced and thus lead to a crash. --- src/checkout.c | 2 +- tests/checkout/tree.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/checkout.c b/src/checkout.c index 72ee8b624..f11102c8b 100644 --- a/src/checkout.c +++ b/src/checkout.c @@ -2722,7 +2722,7 @@ int git_checkout_tree( if ((error = git_repository_index(&index, repo)) < 0) return error; - if ((opts->checkout_strategy & GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH)) { + if (opts && (opts->checkout_strategy & GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH)) { iter_opts.pathlist.count = opts->paths.count; iter_opts.pathlist.strings = opts->paths.strings; } diff --git a/tests/checkout/tree.c b/tests/checkout/tree.c index 7df4d7ef0..4a0314a9e 100644 --- a/tests/checkout/tree.c +++ b/tests/checkout/tree.c @@ -1479,3 +1479,7 @@ void test_checkout_tree__baseline_is_empty_when_no_index(void) git_reference_free(head); } +void test_checkout_tree__nullopts(void) +{ + cl_git_pass(git_checkout_tree(g_repo, NULL, NULL)); +}