Commit ff5eea06 by Patrick Steinhardt

pack: dereference cached pack entry on error

When trying to uncompress deltas in a packfile's delta chain, we try to
add object bases to the packfile cache, subsequently decrementing its
reference count if it has been added successfully. This may lead to a
mismatched reference count in the case where we exit the loop early due
to an encountered error.

Fix the issue by decrementing the reference count in error cleanup.
parent 8339c660
......@@ -757,8 +757,11 @@ int git_packfile_unpack(
}
cleanup:
if (error < 0)
if (error < 0) {
git__free(obj->data);
if (cached)
git_atomic_dec(&cached->refcount);
}
if (elem)
*obj_offset = curpos;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment