Commit Diff


commit - 8e778ade0370b5cabdf946ca7d9d6ac9338790b0
commit + 4334634cb7af0badfce4bc8e1ea2db71cc2705c0
blob - 7c6e96e31033b1401d1fabc19f50ec38cab506bd
blob + a92b7858b5d859bcd0b735f7db1303a292582fe7
--- tog/tog.c
+++ tog/tog.c
@@ -6999,13 +6999,7 @@ cmd_blame(int argc, char *argv[])
 		    commit_id_str, GOT_OBJ_TYPE_COMMIT, &tog_refs, repo);
 	}
 	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)
@@ -7016,10 +7010,19 @@ 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)
+	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);
@@ -7032,11 +7035,6 @@ done:
 	free(link_target);
 	free(cwd);
 	free(commit_id);
-	if (error != NULL && view != NULL) {
-		if (view->close == NULL)
-			close_blame_view(view);
-		view_close(view);
-	}
 	if (commit)
 		got_object_commit_close(commit);
 	if (worktree)