[Mesa-dev] [PATCH 1/9] ralloc: Allow reparenting to a NULL context
kenneth at whitecape.org
Fri Aug 18 00:49:08 UTC 2017
On Thursday, August 17, 2017 4:54:05 PM PDT Timothy Arceri wrote:
> On 18/08/17 09:05, Kenneth Graunke wrote:
> > On Thursday, August 17, 2017 10:22:15 AM PDT Jason Ekstrand wrote:
> >> ---
> >> src/util/ralloc.c | 2 +-
> >> 1 file changed, 1 insertion(+), 1 deletion(-)
> >> diff --git a/src/util/ralloc.c b/src/util/ralloc.c
> >> index bf46439..4015c7e 100644
> >> --- a/src/util/ralloc.c
> >> +++ b/src/util/ralloc.c
> >> @@ -285,7 +285,7 @@ ralloc_steal(const void *new_ctx, void *ptr)
> >> return;
> >> info = get_header(ptr);
> >> - parent = get_header(new_ctx);
> >> + parent = new_ctx ? get_header(new_ctx) : NULL;
> >> unlink_block(info);
> > This patch is:
> > Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
> > ralloc_adopt() doesn't properly handle NULL either, but frankly...
> > reparenting an unknown set of children to the NULL context sounds like a
> > recipe for leaks. :)
> I agree. I was wondering if we should create a special function for this:
> ralloc_steal_to_NULL_ctx(void *ptr)
> To void issues like:
> parent->child = NULL;
> ... lots of code in between ...
> ralloc_steal(parent->child, ptr);
> Feel free to tell me I'm being paranoid.
I think steal to NULL is fine, because you're only stealing one item, and
you can easily hold on to a pointer and free it later. Adopt is bad because
it steals a whole bunch of things, so unless you had a reference to all of
them, you've effectively leaked them. And if you had such a list, you could
just steal them all and not use adopt in the first place.
I'm not really sure why steal-to-NULL is useful, but I guess it can be.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 833 bytes
Desc: This is a digitally signed message part.
More information about the mesa-dev