Commit Diff


commit - 772fcad51433f2ecbfaea38a78e02d07ed1eef7f
commit + a6d62598bfa3a98f9eea7d49ea7d809be9bdfcdf
blob - 559955d325a27c4bce1eb5e9b3bce645b16cf7d8
blob + 00c511b5f7f9644583cf5b773e93ddb21722efea
--- lib/diff.c
+++ lib/diff.c
@@ -73,7 +73,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;
 
@@ -186,14 +186,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;
 }
 
@@ -277,6 +278,7 @@ diff_blob_file(struct got_diffreg_result **resultp,
 			goto done;
 	}
 
+done:
 	if (resultp && err == NULL)
 		*resultp = result;
 	else if (result) {
@@ -284,7 +286,6 @@ diff_blob_file(struct got_diffreg_result **resultp,
 		if (free_err && err == NULL)
 			err = free_err;
 	}
-done:
 	return err;
 }