Skip to content

Commit 2cfb83b

Browse files
committed
blame: don't try to create a blame on error
When an error occurs... deal with the error, don't try to still create hunks.
1 parent 1925889 commit 2cfb83b

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

src/libgit2/blame.c

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -432,12 +432,12 @@ static int blame_internal(git_blame *blame)
432432

433433
if ((error = load_blob(blame)) < 0 ||
434434
(error = git_blame__get_origin(&o, blame, blame->final, blame->path)) < 0)
435-
goto cleanup;
435+
goto on_error;
436436

437437
if (git_blob_rawsize(blame->final_blob) > SIZE_MAX) {
438438
git_error_set(GIT_ERROR_NOMEMORY, "blob is too large to blame");
439439
error = -1;
440-
goto cleanup;
440+
goto on_error;
441441
}
442442

443443
blame->final_buf = git_blob_rawcontent(blame->final_blob);
@@ -456,17 +456,19 @@ static int blame_internal(git_blame *blame)
456456

457457
blame->ent = ent;
458458

459-
error = git_blame__like_git(blame, blame->options.flags);
459+
if ((error = git_blame__like_git(blame, blame->options.flags)) < 0)
460+
goto on_error;
460461

461-
cleanup:
462-
for (ent = blame->ent; ent; ) {
463-
git_blame__entry *e = ent->next;
462+
for (ent = blame->ent; ent; ent = ent->next) {
464463
git_blame_hunk *h = hunk_from_entry(ent, blame);
465-
466464
git_vector_insert(&blame->hunks, h);
465+
}
467466

467+
on_error:
468+
for (ent = blame->ent; ent; ) {
469+
git_blame__entry *next = ent->next;
468470
git_blame__free_entry(ent);
469-
ent = e;
471+
ent = next;
470472
}
471473

472474
return error;

0 commit comments

Comments
 (0)