commit e08111f29f40db6013de92a2f63265255d647ee8 from: Mark Jamsek date: Sun Apr 16 07:36:47 2023 UTC tog: tweak blame tog_view deallocation fix from 2ca2f982 Both view_close() and close_blame_view() are called from view_loop() irrespective of error, so only call these from cmd_blame() to ensure the tog_view structure is not leaked when open_blame_view() errors. ok stsp@ commit - 8d212112582e612c39aa399858bc0b10c74782d0 commit + e08111f29f40db6013de92a2f63265255d647ee8 blob - c05b5d3f676d0d0b4f723b3825e8cf02afd3fa47 blob + 232ab4c8aa553e2c4cf0a880fe27470a40b63e0f --- tog/tog.c +++ tog/tog.c @@ -6997,12 +6997,6 @@ cmd_blame(int argc, char *argv[]) if (error != NULL) goto done; - view = view_open(0, 0, 0, 0, TOG_VIEW_BLAME); - if (view == NULL) { - error = got_error_from_errno("view_open"); - goto done; - } - error = got_object_open_as_commit(&commit, repo, commit_id); if (error) goto done; @@ -7012,27 +7006,31 @@ cmd_blame(int argc, char *argv[]) if (error) goto done; + view = view_open(0, 0, 0, 0, TOG_VIEW_BLAME); + if (view == NULL) { + error = got_error_from_errno("view_open"); + goto done; + } error = open_blame_view(view, link_target ? link_target : in_repo_path, commit_id, repo); - if (error) - goto done; - if (worktree) { - /* Release work tree lock. */ - got_worktree_close(worktree); - worktree = NULL; - } - error = view_loop(view); -done: - free(repo_path); - free(in_repo_path); - free(link_target); - free(cwd); - free(commit_id); - if (error != NULL && view != NULL) { + if (error != NULL) { if (view->close == NULL) close_blame_view(view); view_close(view); + goto done; } + if (worktree) { + /* Release work tree lock. */ + got_worktree_close(worktree); + worktree = NULL; + } + error = view_loop(view); +done: + free(repo_path); + free(in_repo_path); + free(link_target); + free(cwd); + free(commit_id); if (commit) got_object_commit_close(commit); if (worktree)