summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurence McGlashan <Laurence.McGlashan@mathworks.co.uk>2019-09-10 17:09:57 +0100
committerLaurence McGlashan <Laurence.McGlashan@mathworks.co.uk>2019-09-10 17:09:57 +0100
commitdde6d9c706bf1ecab545da55ab874a016587af1f (patch)
tree6d36dd68f41df75bd7d7dd6b75bd411844c6742c
parentb545be3dbf3ff2d2aceff955641efae828ed9853 (diff)
downloadlibgit2-dde6d9c706bf1ecab545da55ab874a016587af1f.tar.gz
open:move all cleanup code to cleanup label in git_repository_open_ext
-rw-r--r--src/repository.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/repository.c b/src/repository.c
index e1e3ef0af..2cb59e0a7 100644
--- a/src/repository.c
+++ b/src/repository.c
@@ -800,7 +800,7 @@ int git_repository_open_ext(
unsigned is_worktree;
git_buf gitdir = GIT_BUF_INIT, workdir = GIT_BUF_INIT,
gitlink = GIT_BUF_INIT, commondir = GIT_BUF_INIT;
- git_repository *repo;
+ git_repository *repo = NULL;
git_config *config = NULL;
if (flags & GIT_REPOSITORY_OPEN_FROM_ENV)
@@ -812,13 +812,8 @@ int git_repository_open_ext(
error = find_repo(
&gitdir, &workdir, &gitlink, &commondir, start_path, flags, ceiling_dirs);
- if (error < 0 || !repo_ptr) {
- git_buf_dispose(&gitdir);
- git_buf_dispose(&workdir);
- git_buf_dispose(&gitlink);
- git_buf_dispose(&commondir);
- return error;
- }
+ if (error < 0 || !repo_ptr)
+ goto cleanup;
repo = repository_alloc();
GIT_ERROR_CHECK_ALLOC(repo);
@@ -864,11 +859,14 @@ int git_repository_open_ext(
cleanup:
git_buf_dispose(&gitdir);
git_buf_dispose(&workdir);
+ git_buf_dispose(&gitlink);
+ git_buf_dispose(&commondir);
git_config_free(config);
if (error < 0)
git_repository_free(repo);
- else
+
+ if (repo_ptr)
*repo_ptr = repo;
return error;