Commit Diff


commit - 3f762da01631c2ce4d05c3a9204014ffee05cbb3
commit + ef129c5eb257c3e07d51b208e51433bbbcac0e27
blob - f686f1e419b03c6090954c62f86a9a7e16788b93
blob + 210e39c80bba547ddbdb3c2104e35e07edec4ee8
--- tog/tog.c
+++ tog/tog.c
@@ -2088,17 +2088,23 @@ input_log_view(struct tog_view **new_view, struct tog_
 			return got_error_from_errno("view_open");
 		err = get_head_commit_id(&start_id, s->head_ref_name ?
 		    s->head_ref_name : GOT_REF_HEAD, s->repo);
-		if (err)
+		if (err) {
+			view_close(lv);
 			return err;
+		}
 		in_repo_path = strdup(s->in_repo_path);
 		if (in_repo_path == NULL) {
 			free(start_id);
+			view_close(lv);
 			return got_error_from_errno("strdup");
 		}
 		err = open_log_view(lv, start_id, s->refs, s->repo,
 		    s->head_ref_name, in_repo_path, 0);
-		if (err)
+		if (err) {
+			free(start_id);
+			view_close(lv);
 			return err;;
+		}
 		*dead_view = view;
 		*new_view = lv;
 		break;