diff options
author | nulltoken <emeric.fermas@gmail.com> | 2013-11-19 13:24:10 +0100 |
---|---|---|
committer | nulltoken <emeric.fermas@gmail.com> | 2013-11-19 13:25:39 +0100 |
commit | bd15b513058afc53543b48383ec5bc56605f6c1e (patch) | |
tree | 434c526712d8e2ed1f39ba62200eb88cb76a648b | |
parent | a5d73188023cf0ae0b6fc42dfeddce5a9ee8ad5f (diff) | |
download | libgit2-bd15b513058afc53543b48383ec5bc56605f6c1e.tar.gz |
index: Free the index on git_index_open() failure
-rw-r--r-- | src/index.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/index.c b/src/index.c index ecab15024..09e7b2346 100644 --- a/src/index.c +++ b/src/index.c @@ -321,6 +321,7 @@ void git_index__set_ignore_case(git_index *index, bool ignore_case) int git_index_open(git_index **index_out, const char *index_path) { git_index *index; + int error; assert(index_out); @@ -346,10 +347,15 @@ int git_index_open(git_index **index_out, const char *index_path) index->entries_search_path = index_srch_path; index->reuc_search = reuc_srch; + if ((index_path != NULL) && ((error = git_index_read(index, true)) < 0)) { + git_index_free(index); + return error; + } + *index_out = index; GIT_REFCOUNT_INC(index); - return (index_path != NULL) ? git_index_read(index, true) : 0; + return 0; } int git_index_new(git_index **out) |