Commit Diff


commit - 5191b70b5b2e123aadd88aeafe2e2cfc0958c327
commit + 3846622fc49b9a60aeee751320ed58ac58d38ef6
blob - 2007e46b23e16bc18f223174ce22d2e157bad96e
blob + 5e9010e76c3aa5de6de83e6b5cd54a4749c4f51a
--- lib/diff.c
+++ lib/diff.c
@@ -72,7 +72,7 @@ diff_blobs(struct got_diff_line **lines, size_t *nline
 	char hex2[SHA1_DIGEST_STRING_LENGTH];
 	const char *idstr1 = NULL, *idstr2 = NULL;
 	off_t size1, size2;
-	struct got_diffreg_result *result;
+	struct got_diffreg_result *result = NULL;
 	off_t outoff = 0;
 	int n;
 
@@ -185,14 +185,15 @@ diff_blobs(struct got_diff_line **lines, size_t *nline
 			goto done;
 	}
 
+done:
 	if (resultp && err == NULL)
 		*resultp = result;
-	else {
+	else if (result) {
 		free_err = got_diffreg_result_free(result);
 		if (free_err && err == NULL)
 			err = free_err;
 	}
-done:
+
 	return err;
 }
 
@@ -276,6 +277,7 @@ diff_blob_file(struct got_diffreg_result **resultp,
 			goto done;
 	}
 
+done:
 	if (resultp && err == NULL)
 		*resultp = result;
 	else if (result) {
@@ -283,7 +285,6 @@ diff_blob_file(struct got_diffreg_result **resultp,
 		if (free_err && err == NULL)
 			err = free_err;
 	}
-done:
 	return err;
 }