summaryrefslogtreecommitdiff
path: root/gdb/valops.c
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2002-02-04 02:14:46 +0000
committerDaniel Jacobowitz <drow@false.org>2002-02-04 02:14:46 +0000
commitacf5ed49a0160dd452b2004034b847912f23940b (patch)
tree915285d68d02c2bf49705b5a7fd31042752948fa /gdb/valops.c
parent493d28d51bca5194de1db46ee372c79de2408975 (diff)
downloadbinutils-gdb-acf5ed49a0160dd452b2004034b847912f23940b.tar.gz
2002-02-03 Daniel Jacobowitz <drow@mvista.com>
* c-valprint.c (c_val_print): Pass a proper valaddr to cp_print_class_method. * valops.c (search_struct_method): If there is only one method and args is NULL, return that method.
Diffstat (limited to 'gdb/valops.c')
-rw-r--r--gdb/valops.c35
1 files changed, 22 insertions, 13 deletions
diff --git a/gdb/valops.c b/gdb/valops.c
index f211753c4a7..6f7e25141d6 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -2274,23 +2274,32 @@ search_struct_method (char *name, struct value **arg1p,
if (j > 0 && args == 0)
error ("cannot resolve overloaded method `%s': no arguments supplied", name);
- while (j >= 0)
+ else if (j == 0 && args == 0)
{
if (TYPE_FN_FIELD_STUB (f, j))
check_stub_method (type, i, j);
- if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
- TYPE_FN_FIELD_ARGS (f, j), args))
- {
- if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
- return value_virtual_fn_field (arg1p, f, j, type, offset);
- if (TYPE_FN_FIELD_STATIC_P (f, j) && static_memfuncp)
- *static_memfuncp = 1;
- v = value_fn_field (arg1p, f, j, type, offset);
- if (v != NULL)
- return v;
- }
- j--;
+ v = value_fn_field (arg1p, f, j, type, offset);
+ if (v != NULL)
+ return v;
}
+ else
+ while (j >= 0)
+ {
+ if (TYPE_FN_FIELD_STUB (f, j))
+ check_stub_method (type, i, j);
+ if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
+ TYPE_FN_FIELD_ARGS (f, j), args))
+ {
+ if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
+ return value_virtual_fn_field (arg1p, f, j, type, offset);
+ if (TYPE_FN_FIELD_STATIC_P (f, j) && static_memfuncp)
+ *static_memfuncp = 1;
+ v = value_fn_field (arg1p, f, j, type, offset);
+ if (v != NULL)
+ return v;
+ }
+ j--;
+ }
}
}