* varobj.c (varobj_create): Keep varobj value
authorVladimir Prus <vladimir@codesourcery.com>
Sun, 1 Apr 2007 15:44:54 +0000 (15:44 +0000)
committerVladimir Prus <vladimir@codesourcery.com>
Sun, 1 Apr 2007 15:44:54 +0000 (15:44 +0000)
        NULL when evaluating the type.

gdb/ChangeLog
gdb/varobj.c

index eac38cdaa17b5bcdacda644758691fb49904b659..20f2a2d50f5b6c26f0925499ad257ec6b3376bdc 100644 (file)
@@ -1,3 +1,8 @@
+2007-04-01  Vladimir Prus  <vladimir@codesourcery.com>
+
+       * varobj.c (varobj_create): Keep varobj value
+       NULL when evaluating the type.
+       
 2007-03-31  Pedro Alves  <pedro_alves@portugalmail.pt>
 
        * NEWS: Mention new Windows CE support.
index 7b2bfb838d2f6bf9a4e4a04cb0607e58caff40a9..1d8c8e8af54b14a9f7d3aa5e529053d79313fdf9 100644 (file)
@@ -433,7 +433,7 @@ varobj_create (char *objname,
     {
       char *p;
       enum varobj_languages lang;
-      struct value *value;
+      struct value *value = NULL;
 
       /* Parse and evaluate the expression, filling in as much
          of the variable's data as possible */
@@ -495,11 +495,15 @@ varobj_create (char *objname,
          If evaluate_expression succeeds we got the value we wanted.
          But if it fails, we still go on with a call to evaluate_type()  */
       if (!gdb_evaluate_expression (var->root->exp, &value))
-       /* Error getting the value.  Try to at least get the
-          right type.  */
-       value = evaluate_type (var->root->exp);
+       {
+         /* Error getting the value.  Try to at least get the
+            right type.  */
+         struct value *type_only_value = evaluate_type (var->root->exp);
+         var->type = value_type (type_only_value);
+       }
+      else 
+       var->type = value_type (value);
 
-      var->type = value_type (value);
       install_new_value (var, value, 1 /* Initial assignment */);
 
       /* Set language info */