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*.
This commit is contained in:
Fernando Nasser 2001-05-10 16:44:56 +00:00
parent d7db6da9f6
commit 0755e6c1ab
2 changed files with 14 additions and 8 deletions

View 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.

View 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;