From 393e55bac4eb94d68b08c6847eae9e40905d2e3e Mon Sep 17 00:00:00 2001 From: Jim Kingdon Date: Wed, 29 Dec 1993 20:52:06 +0000 Subject: [PATCH] * c-exp.y: Revert Kung's change. "..." is not a type, and the change caused "p (...)0" to dump core. * gdbtypes.c (check_stub_method): Don't pass "..." to parse_and_eval_type. This should fix the bug which Kung was trying to fix. --- gdb/ChangeLog | 6 ++++++ gdb/c-exp.y | 1 - gdb/gdbtypes.c | 10 +++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 54cb0d1ceb..d846ad0f35 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ Wed Dec 29 12:32:08 1993 Jim Kingdon (kingdon@lioth.cygnus.com) + * c-exp.y: Revert Kung's change. "..." is not a type, and the + change caused "p (...)0" to dump core. + * gdbtypes.c (check_stub_method): Don't pass "..." to + parse_and_eval_type. This should fix the bug which Kung was + trying to fix. + * stabsread.c (define_symbol): If we choose not to combine two symbols, don't just ignore the second (LOC_REGISTER) one. * printcmd.c (print_frame_args): If we have a LOC_ARG and a diff --git a/gdb/c-exp.y b/gdb/c-exp.y index f58424f6ab..ebc1ca66c7 100644 --- a/gdb/c-exp.y +++ b/gdb/c-exp.y @@ -831,7 +831,6 @@ typebase /* Implements (approximately): (type-qualifier)* type-specifier */ be too. */ | CONST_KEYWORD typebase { $$ = $2; } | VOLATILE_KEYWORD typebase { $$ = $2; } - | '.' '.' '.' { $$ = NULL; } ; typename: TYPENAME diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index e361796df8..d1a7da91d7 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -989,9 +989,13 @@ check_stub_method (type, i, j) { if (depth <= 0 && (*p == ',' || *p == ')')) { - argtypes[argcount] = - parse_and_eval_type (argtypetext, p - argtypetext); - argcount += 1; + /* Avoid parsing of ellipsis, they will be handled below. */ + if (strncmp (argtypetext, "...", p - argtypetext) != 0) + { + argtypes[argcount] = + parse_and_eval_type (argtypetext, p - argtypetext); + argcount += 1; + } argtypetext = p + 1; }