Commit Diff


commit - ff2a4428e6e7d8e8dcb70915aa91472531df7b5f
commit + 7baf5860e933fb606101bf5c6eba106e914b0fac
blob - a630dccdb7ba6ff744c85360f6bab5afc30a888a
blob + 911aa0e314aa74b4cbc6a5f1f749500f7cd6eb3e
--- lib/object.c
+++ lib/object.c
@@ -1057,10 +1057,7 @@ open_blob(struct got_blob_object **blob, struct got_re
 done:
 	if (err) {
 		if (*blob) {
-			if ((*blob)->f)
-				fclose((*blob)->f);
-			free((*blob)->read_buf);
-			free((*blob)->data);
+			got_object_blob_close(*blob);
 			free(*blob);
 			*blob = NULL;
 		} else if (outfd != -1)
@@ -1089,7 +1086,7 @@ got_object_blob_close(struct got_blob_object *blob)
 {
 	const struct got_error *err = NULL;
 	free(blob->read_buf);
-	if (fclose(blob->f) != 0)
+	if (blob->f && fclose(blob->f) != 0)
 		err = got_error_from_errno();
 	free(blob->data);
 	free(blob);