This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 2/6] Mention which return values need to be freed in lang_varobj_ops


> 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]