2001-05-10 Fernando Nasser <fnasser@redhat.com>
authorFernando Nasser <fnasser@redhat.com>
Thu, 10 May 2001 16:44:56 +0000 (16:44 +0000)
committerFernando Nasser <fnasser@redhat.com>
Thu, 10 May 2001 16:44:56 +0000 (16:44 +0000)
* varobj.c (c_number_of_children): Check for target type of void*,
not the target type name.  Allow dereferencing char*.

gdb/ChangeLog
gdb/varobj.c

index f7ae18b43371de3c49d86fceba83d1fc0adaff6e..52287b459c4fdee7d677529b2243b8f06d05c3b5 100644 (file)
@@ -1,3 +1,8 @@
+2001-05-10  Fernando Nasser  <fnasser@redhat.com>
+
+       * varobj.c (c_number_of_children): Check for target type of void*,
+       not the target type name.  Allow dereferencing char*.
+
 2001-05-10  Fernando Nasser  <fnasser@redhat.com>
 
        * symfile.c (symbol_file_add_main_1): New static function. 
index 40bc209de3ef0eb14a664c44738d7e3d24f460d2..c61c313f088a4792fe9803e9572176b48e5670b1 100644 (file)
@@ -1761,7 +1761,13 @@ c_number_of_children (struct varobj *var)
     case TYPE_CODE_PTR:
       /* This is where things get compilcated. All pointers have one child.
          Except, of course, for struct and union ptr, which we automagically
-         dereference for the user and function ptrs, which have no children. */
+         dereference for the user and function ptrs, which have no children.
+         We also don't dereference void* as we don't know what to show.
+         We can show char* so we allow it to be dereferenced.  If you decide
+         to test for it, please mind that a little magic is necessary to
+         properly identify it: char* has TYPE_CODE == TYPE_CODE_INT and 
+         TYPE_NAME == "char" */
+
       switch (TYPE_CODE (target))
        {
        case TYPE_CODE_STRUCT:
@@ -1770,17 +1776,12 @@ c_number_of_children (struct varobj *var)
          break;
 
        case TYPE_CODE_FUNC:
+       case TYPE_CODE_VOID:
          children = 0;
          break;
 
        default:
-         /* Don't dereference char* or void*. */
-         if (TYPE_NAME (target) != NULL
-             && (STREQ (TYPE_NAME (target), "char")
-                 || STREQ (TYPE_NAME (target), "void")))
-           children = 0;
-         else
-           children = 1;
+         children = 1;
        }
       break;