2002-10-23 Jeff Johnston <jjohnstn@redhat.com>
authorJeff Johnston <jjohnstn@redhat.com>
Wed, 23 Oct 2002 23:54:33 +0000 (23:54 +0000)
committerJeff Johnston <jjohnstn@redhat.com>
Wed, 23 Oct 2002 23:54:33 +0000 (23:54 +0000)
        * 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.

gdb/ChangeLog
gdb/NEWS
gdb/varobj.c

index 09259e595bd55df51e978b65671469f31554b31b..6ea208546da685837fb5bee1f0556bdfc475d132 100644 (file)
@@ -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.
index 4ce063e0794b4ae31a0a308b52a441cedc5a8a23..0ba805d88d55b92135a585964b203a88e2b8e846 100644 (file)
--- a/gdb/NEWS
+++ b/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                             
index 16ba528afe67dc2d2534124418932a4cb02adb75..a0e1d53f95c57caff82eba575e32b75559b2bf8d 100644 (file)
@@ -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;
 }
This page took 0.046127 seconds and 4 git commands to generate.