[Xcb] about xcb_image
Barton C Massey
bart at cs.pdx.edu
Sun Mar 9 11:35:50 PDT 2008
In message <Pine.LNX.4.64.0803091156000.5181 at grozny.maths.univ-evry.fr> you wrote:
>
> I think that I know how to deal correctly with the new xcb_image, but I
> think that i found a problem with xcb_image_create().
>
> When base = data = NULL and size = ~0 (that is, when it's the user who
> manages his data), image->base may be not NULL, because we didn't calloc
> the xcb_image_t object. Hence, in xcb_image_destroy(), we try to free a
> memory that has maybe not been allocated.
>
> I have solved the problem by just setting image->base to NULL after line
> 267. I think that it's faster than a calloc.
>
> Is it a correct fix ?
The comment right above 267 that says "when base = 0 && data
== 0 && bytes == ~0 we just return the image structure and
let the caller deal with getting the allocation right" was
deliberate---my intent was that any caller that uses
xcb_image_create() this way is responsible for initializing
both base and data appropriately for what they're trying to
do. A typical usage of this mode is that you want to do
something clever with the allocation, but you want
xcb_image_create() to compute the image size for you first.
That said, zeroing base and data on the return is harmless
and apparently might make a user error easier to find, so I
committed a patch that does this.
Bart
More information about the Xcb
mailing list