]> git.proxmox.com Git - libgit2.git/commitdiff
checkout::crlf test: don't crash when no idx entry
authorEdward Thomson <ethomson@microsoft.com>
Fri, 13 Nov 2015 20:36:45 +0000 (15:36 -0500)
committerEdward Thomson <ethomson@edwardthomson.com>
Tue, 17 Nov 2015 03:58:59 +0000 (22:58 -0500)
When there's no matching index entry (for whatever reason), don't
try to dereference the null return value to get at the id.

Otherwise when we break something in the index API, the checkout
test crashes for confusing reasons and causes us to step through
it in a debugger thinking that we had broken much more than we
actually did.

tests/checkout/crlf.c

index 8e77d08454bc9846748137fe973369616827ffef..347c22198ebfbdba20f051fd4c9772106ce9c223 100644 (file)
@@ -278,6 +278,7 @@ void test_checkout_crlf__autocrlf_true_index_size_is_filtered_size(void)
 void test_checkout_crlf__with_ident(void)
 {
        git_index *index;
+       git_index_entry *entry;
        git_blob *blob;
        git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;
        opts.checkout_strategy = GIT_CHECKOUT_FORCE;
@@ -310,14 +311,14 @@ void test_checkout_crlf__with_ident(void)
 
        /* check that blobs have $Id$ */
 
-       cl_git_pass(git_blob_lookup(&blob, g_repo,
-               & git_index_get_bypath(index, "lf.ident", 0)->id));
+       cl_assert((entry = git_index_get_bypath(index, "lf.ident", 0)));
+       cl_git_pass(git_blob_lookup(&blob, g_repo, &entry->id));
        cl_assert_equal_s(
                ALL_LF_TEXT_RAW "\n$Id$\n", git_blob_rawcontent(blob));
        git_blob_free(blob);
 
-       cl_git_pass(git_blob_lookup(&blob, g_repo,
-               & git_index_get_bypath(index, "more2.identcrlf", 0)->id));
+       cl_assert((entry = git_index_get_bypath(index, "more2.identcrlf", 0)));
+       cl_git_pass(git_blob_lookup(&blob, g_repo, &entry->id));
        cl_assert_equal_s(
                "\n$Id$\n" MORE_CRLF_TEXT_AS_LF, git_blob_rawcontent(blob));
        git_blob_free(blob);