diff options
author | Tom Tromey <tromey@redhat.com> | 2008-10-30 21:44:14 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2008-10-30 21:44:14 +0000 |
commit | 0a82c8f116e07825ffe642a39a151f4afb8461b9 (patch) | |
tree | 67b6088e1f34306af35d8c98116e4d6d87964a6c /gdb/value.c | |
parent | 8c2c39f7fcb89b215195a281dbeb6ded9f15eb21 (diff) | |
download | gdb-0a82c8f116e07825ffe642a39a151f4afb8461b9.tar.gz |
gdb
* value.c (coerce_array): Use check_typedef.
gdb/testsuite
* gdb.base/pointers.exp: Add test.
* gdb.base/pointers.c (k, S): New typedefs.
(instance): New global.
Diffstat (limited to 'gdb/value.c')
-rw-r--r-- | gdb/value.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/gdb/value.c b/gdb/value.c index 1fa376d6555..695aa334390 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -1728,12 +1728,21 @@ coerce_ref (struct value *arg) struct value * coerce_array (struct value *arg) { + struct type *type; + arg = coerce_ref (arg); - if (current_language->c_style_arrays - && TYPE_CODE (value_type (arg)) == TYPE_CODE_ARRAY) - arg = value_coerce_array (arg); - if (TYPE_CODE (value_type (arg)) == TYPE_CODE_FUNC) - arg = value_coerce_function (arg); + type = check_typedef (value_type (arg)); + + switch (TYPE_CODE (type)) + { + case TYPE_CODE_ARRAY: + if (current_language->c_style_arrays) + arg = value_coerce_array (arg); + break; + case TYPE_CODE_FUNC: + arg = value_coerce_function (arg); + break; + } return arg; } |