summaryrefslogtreecommitdiff
path: root/gdb/varobj.c
diff options
context:
space:
mode:
authorFernando Nasser <fnasser@redhat.com>2000-10-13 20:31:38 +0000
committerFernando Nasser <fnasser@redhat.com>2000-10-13 20:31:38 +0000
commit3c151aef2eb34f45d082b16456716bb297c32839 (patch)
treefd9a1e2307e05b686a50b14f9ab70a7ce41da22f /gdb/varobj.c
parent127cd060697bde98439359b9b933d03cb0b855e2 (diff)
downloadgdb-3c151aef2eb34f45d082b16456716bb297c32839.tar.gz
2000-10-13 Fernando Nasser <fnasser@totem.to.cygnus.com>
* varobj.c (varobj_update): Prevent uninitialized error code to be returned on type_changed. Also, prevent value_equal() to be called for the types we do not want to test for updates.
Diffstat (limited to 'gdb/varobj.c')
-rw-r--r--gdb/varobj.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/gdb/varobj.c b/gdb/varobj.c
index 9205e9d73ea..b1c44a0c86b 100644
--- a/gdb/varobj.c
+++ b/gdb/varobj.c
@@ -917,21 +917,24 @@ varobj_update (struct varobj *var, struct varobj ***changelist)
/* Initialize a stack for temporary results */
vpush (&result, NULL);
- if (type_changed || !my_value_equal (var->value, new, &error2))
+ /* If this is a "use_selected_frame" varobj, and its type has changed,
+ them note that it's changed. */
+ if (type_changed)
{
- /* Note that it's changed There a couple of exceptions here,
- though. We don't want some types to be reported as
- "changed". The exception to this is if this is a
- "use_selected_frame" varobj, and its type has changed. */
- if (type_changed || type_changeable (var))
- {
- vpush (&result, var);
- changed++;
- }
+ vpush (&result, var);
+ changed++;
+ }
+ /* 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 (var) && !my_value_equal (var->value, new, &error2))
+ {
+ vpush (&result, var);
+ changed++;
+ /* error2 replaces var->error since this new value
+ WILL replace the old one. */
+ var->error = error2;
}
- /* error2 replaces var->error since this new value
- WILL replace the old one. */
- var->error = error2;
/* We must always keep around the new value for this root
variable expression, or we lose the updated children! */