diff options
author | Laurence McGlashan <Laurence.McGlashan@mathworks.co.uk> | 2019-09-10 17:09:57 +0100 |
---|---|---|
committer | Laurence McGlashan <Laurence.McGlashan@mathworks.co.uk> | 2019-09-10 17:09:57 +0100 |
commit | dde6d9c706bf1ecab545da55ab874a016587af1f (patch) | |
tree | 6d36dd68f41df75bd7d7dd6b75bd411844c6742c | |
parent | b545be3dbf3ff2d2aceff955641efae828ed9853 (diff) | |
download | libgit2-dde6d9c706bf1ecab545da55ab874a016587af1f.tar.gz |
open:move all cleanup code to cleanup label in git_repository_open_ext
-rw-r--r-- | src/repository.c | 16 |
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; |