This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: RFC: MI - Detecting change of string contents with variable objects
- From: Daniel Jacobowitz <drow at false dot org>
- To: Nick Roberts <nickrob at snap dot net dot nz>
- Cc: Vladimir Prus <ghost at cs dot msu dot su>, gdb-patches at sources dot redhat dot com
- Date: Wed, 3 Jan 2007 23:20:38 -0500
- Subject: Re: RFC: MI - Detecting change of string contents with variable objects
- References: <17797.65268.689590.797944@kahikatea.snap.net.nz> <E1GwCV8-0008SD-TG@zigzag.lvk.cs.msu.su> <17798.19683.251190.740216@kahikatea.snap.net.nz> <200612181136.02429.ghost@cs.msu.su> <20061218133827.GA24800@nevyn.them.org> <17799.3497.476593.138858@kahikatea.snap.net.nz> <20070103224605.GO17935@nevyn.them.org> <17820.32496.851404.587153@kahikatea.snap.net.nz>
On Thu, Jan 04, 2007 at 05:13:36PM +1300, Nick Roberts wrote:
> I've probably done it the other way round to how you're asking (used
> value_get_print_value in c_value_of_variable) but, likewise, it involves
> re-use.
Works out the same. It looks reasonable to me.
> struct type *type;
>
> +
> /* The value of this expression or subexpression. This may be NULL.
Please try not to gratuitously move whitespace around (you
did this in a bunch of places). I really appreciate that
when reviewing.
> ! if (var->print_value)
> ! {
> ! if (strcmp (var->print_value,
> ! value_get_print_value (value, var->format)))
> ! {
> ! xfree (var->print_value);
> ! var->print_value =
> ! xstrdup (value_get_print_value (value, var->format));
> ! changed = 1;
> ! }
> ! }
> ! else
> ! var->print_value =
> ! xstrdup (value_get_print_value (value, var->format));
value_get_print_value does a bunch of work, and returns a malloced
string. So you should avoid calling it twice, and avoid leaking the
return value.
--
Daniel Jacobowitz
CodeSourcery