Commit Diff


commit - bb5dcc10ceb4a956d322cbd7523d3421e80df2e3
commit + 254707814d845a2c4a93c473ad51e9e1b28c716f
blob - 9256ea5be5dc6311281aab2d0cf55c00ac6c5732
blob + fb1724c0ddbc3fe5a9dd001ccb99e8ff4acc3093
--- got/got.c
+++ got/got.c
@@ -343,8 +343,16 @@ print_commits(struct got_object *root_obj, struct got_
 
 		entry = TAILQ_FIRST(&commits);
 		err = print_commit(entry->commit, entry->id, repo, show_patch);
-		if (err)
+		if (err) {
+			while (!TAILQ_EMPTY(&commits)) {
+				entry = TAILQ_FIRST(&commits);
+				TAILQ_REMOVE(&commits, entry, entry);
+				got_object_commit_close(entry->commit);
+				free(entry->id);
+				free(entry);
+			}
 			break;
+		}
 
 		SIMPLEQ_FOREACH(pid, &entry->commit->parent_ids, entry) {
 			struct got_object *obj;