Thread (14 messages) flat view 14 messages, 4 authors, 2016-06-15

Re: [PATCH V2 5/6] pack-bitmap: fix a memleak

From: Jeff King <hidden>
Date: 2016-06-15 23:04:19

On Fri, Mar 27, 2015 at 03:32:48PM -0700, Stefan Beller wrote:
`recent_bitmaps` is allocated in the function load_bitmap_entries_v1
and it is not passed into any function, so it's safe to free it before
leaving that function.
I think this is OK, though it might be easier still to just turn the
array into a stack variable. It's only 160 * sizeof(ptr), or about 1280
bytes on a 64-bit system. Note that the xcalloc there looks wrong (it is
way over-allocating by using the sizeof the struct, not a pointer to the
struct).
Notes:
    I wonder however if we need to free the actual bitmaps
    stored in the recent_bitmaps as well.
No, those are just weak pointers. The memory is owned by the hash that
store_bitmap puts the bitmaps into.
 		bitmap = read_bitmap_1(index);
This line allocates, too. So if we get down to...
-		if (xor_offset > MAX_XOR_OFFSET || xor_offset > i)
-			return error("Corrupted bitmap pack index");
+		if (xor_offset > MAX_XOR_OFFSET || xor_offset > i) {
+			ret = error("Corrupted bitmap pack index");
+			goto out;
+		}
...here, for example, where we have not yet called store_bitmap, then
it's a leak, too.

-Peff
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help