[PATCH 2/6] Mention which return values need to be freed in lang_varobj_ops
Joel Brobecker
brobecker@adacore.com
Fri Jan 30 08:19:00 GMT 2015
> gdb/ChangeLog:
>
> * varobj.h (lang_varobj_ops): Mention which return values need
> to be freed.
Thanks for doing that! One question...
> - /* The ``struct value *'' of the INDEX'th child of PARENT. */
> + /* The ``struct value *'' of the INDEX'th child of PARENT. The returned
> + value must be freed by the caller. */
> struct value *(*value_of_child) (struct varobj *parent, int index);
I'm really surprised by this. For memory management, the struct value
objects are put on a chain. So, you wouldn't delete the value returned,
but you would instead use "value_mark/value_free_to_mark". The top-level
command loop takes a mark at the beginning of the command, and uses it
to free any un-freed value after the command completes.
But maybe you saw something that contradicts my understanding?
--
Joel
More information about the Gdb-patches
mailing list