http://sourceware.org/ml/gdb-patches/2012-07/msg00551.html
[deliverable/binutils-gdb.git] / gdb / varobj.c
index 99b158efcfd5d3c0822923271ebb7596bf6be1e9..a75a40da5720d707f4ccdad69ef5d13e754afc54 100644 (file)
@@ -4186,18 +4186,17 @@ _initialize_varobj (void)
 }
 
 /* Invalidate varobj VAR if it is tied to locals and re-create it if it is
-   defined on globals.  It is a helper for varobj_invalidate.  */
+   defined on globals.  It is a helper for varobj_invalidate.
+
+   This function is called after changing the symbol file, in this case the
+   pointers to "struct type" stored by the varobj are no longer valid.  All
+   varobj must be either re-evaluated, or marked as invalid here.  */
 
 static void
 varobj_invalidate_iter (struct varobj *var, void *unused)
 {
-  /* Floating varobjs are reparsed on each stop, so we don't care if the
-     presently parsed expression refers to something that's gone.  */
-  if (var->root->floating)
-    return;
-
-  /* global var must be re-evaluated.  */     
-  if (var->root->valid_block == NULL)
+  /* global and floating var must be re-evaluated.  */
+  if (var->root->floating || var->root->valid_block == NULL)
     {
       struct varobj *tmp_var;
 
This page took 0.045834 seconds and 4 git commands to generate.