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
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to