commit - 063c1beddf228ca8de0908dfc24c5a045de41ab3
commit + ab3ad429d13810549bc4338c59fe5e8a0168e228
blob - eaca8311fc195b30910f37ca7d19b7bfe34ffc13
blob + 4ad316f3338e6906c54c7dfc2aeb43250fc05ee3
--- lib/pack.c
+++ lib/pack.c
err = add_delta(deltas, pack->path_packfile, delta_offset, tslen,
delta_type, delta_size, delta_data_offset, delta_buf, delta_len);
if (err)
- return err;
+ goto done;
/* An offset delta must be in the same packfile. */
- if (base_offset >= pack->filesize)
- return got_error(GOT_ERR_PACK_OFFSET);
+ if (base_offset >= pack->filesize) {
+ err = got_error(GOT_ERR_PACK_OFFSET);
+ goto done;
+ }
err = parse_object_type_and_size(&base_type, &base_size, &base_tslen,
pack, base_offset);
if (err)
- return err;
+ goto done;
- return resolve_delta_chain(deltas, repo, packidx, pack, base_offset,
+ err = resolve_delta_chain(deltas, repo, packidx, pack, base_offset,
base_tslen, base_type, base_size, recursion - 1);
+done:
+ if (err)
+ free(delta_buf);
+ return err;
}
static const struct got_error *