2002-10-23 Jeff Johnston <jjohnstn@redhat.com>
* NEWS: add recent mi fixes. * varobj.c (struct varobj): Add new "updated" flag. (new_variable): Default "updated" flag to 0. (varobj_set_value): Set "updated" flag to 1 if value changes. (varobj_update): Check varobj "updated" flag before comparing old and refreshed values. Fix for PR gdb/702.
This commit is contained in:
parent
8da065d53c
commit
fb9b6b359f
@ -1,3 +1,14 @@
|
||||
2002-10-23 Jeff Johnston <jjohnstn@redhat.com>
|
||||
|
||||
* NEWS: add recent mi fixes.
|
||||
* varobj.c (struct varobj): Add new "updated" flag.
|
||||
(new_variable): Default "updated" flag to 0.
|
||||
(varobj_set_value): Set "updated" flag to 1 if value
|
||||
changes.
|
||||
(varobj_update): Check varobj "updated" flag before
|
||||
comparing old and refreshed values. Fix for
|
||||
PR gdb/702.
|
||||
|
||||
2002-10-23 David Carlton <carlton@math.stanford.edu>
|
||||
|
||||
* parse.c (parse_exp_1): Use BLOCK_START.
|
||||
|
5
gdb/NEWS
5
gdb/NEWS
@ -12,6 +12,11 @@ option "-i=mi", has been changed to "mi2". The previous MI syntax,
|
||||
Support for the original "mi0" syntax (included in GDB 5.0) has been
|
||||
removed.
|
||||
|
||||
Fix for gdb/192: removed extraneous space when displaying frame level.
|
||||
Fix for gdb/672: update changelist is now output in mi list format.
|
||||
Fix for gdb/702: a -var-assign that updates the value now shows up
|
||||
in a subsequent -var-update.
|
||||
|
||||
* REMOVED configurations and files
|
||||
|
||||
V850EA ISA
|
||||
|
16
gdb/varobj.c
16
gdb/varobj.c
@ -111,6 +111,9 @@ struct varobj
|
||||
|
||||
/* The format of the output for this object */
|
||||
enum varobj_display_formats format;
|
||||
|
||||
/* Was this variable updated via a varobj_set_value operation */
|
||||
int updated;
|
||||
};
|
||||
|
||||
/* Every variable keeps a linked list of its children, described
|
||||
@ -753,6 +756,7 @@ int
|
||||
varobj_set_value (struct varobj *var, char *expression)
|
||||
{
|
||||
struct value *val;
|
||||
int error;
|
||||
int offset = 0;
|
||||
|
||||
/* The argument "expression" contains the variable's new value.
|
||||
@ -778,6 +782,8 @@ varobj_set_value (struct varobj *var, char *expression)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!my_value_equal (var->value, value, &error))
|
||||
var->updated = 1;
|
||||
if (!gdb_value_assign (var->value, value, &val))
|
||||
return 0;
|
||||
value_free (var->value);
|
||||
@ -893,10 +899,11 @@ varobj_update (struct varobj **varp, struct varobj ***changelist)
|
||||
/* If values are not equal, note that it's changed.
|
||||
There a couple of exceptions here, though.
|
||||
We don't want some types to be reported as "changed". */
|
||||
else if (type_changeable (*varp)
|
||||
&& !my_value_equal ((*varp)->value, new, &error2))
|
||||
else if (type_changeable (*varp) &&
|
||||
((*varp)->updated || !my_value_equal ((*varp)->value, new, &error2)))
|
||||
{
|
||||
vpush (&result, *varp);
|
||||
(*varp)->updated = 0;
|
||||
changed++;
|
||||
/* error2 replaces var->error since this new value
|
||||
WILL replace the old one. */
|
||||
@ -933,10 +940,12 @@ varobj_update (struct varobj **varp, struct varobj ***changelist)
|
||||
|
||||
/* Update this variable */
|
||||
new = value_of_child (v->parent, v->index);
|
||||
if (type_changeable (v) && !my_value_equal (v->value, new, &error2))
|
||||
if (type_changeable (v) &&
|
||||
(v->updated || !my_value_equal (v->value, new, &error2)))
|
||||
{
|
||||
/* Note that it's changed */
|
||||
vpush (&result, v);
|
||||
v->updated = 0;
|
||||
changed++;
|
||||
}
|
||||
/* error2 replaces v->error since this new value
|
||||
@ -1294,6 +1303,7 @@ new_variable (void)
|
||||
var->children = NULL;
|
||||
var->format = 0;
|
||||
var->root = NULL;
|
||||
var->updated = 0;
|
||||
|
||||
return var;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user