From 8120c9d5cc29f4321197b2b2d0ad9f3eca410dfc Mon Sep 17 00:00:00 2001 From: Elena Zannoni Date: Fri, 10 May 2002 00:29:23 +0000 Subject: [PATCH] 2002-05-09 Elena Zannoni From Daniel Berlin * linespec.c (find_toplevel_char): '<' and '>' also increase and decrease the depth we are at, in the case of templates. --- gdb/ChangeLog | 6 ++++++ gdb/linespec.c | 8 +++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 6f9e14d597..57c8afc088 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2002-05-09 Elena Zannoni + + From Daniel Berlin + * linespec.c (find_toplevel_char): '<' and '>' also increase and + decrease the depth we are at, in the case of templates. + 2002-05-09 Daniel Jacobowitz * mips-tdep.c (mips_float_register_type): New function. diff --git a/gdb/linespec.c b/gdb/linespec.c index cbfafcfb95..b9a772c9ad 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -298,7 +298,9 @@ build_canonical_line_spec (struct symtab_and_line *sal, char *symname, /* Find an instance of the character C in the string S that is outside of all parenthesis pairs, single-quoted strings, and double-quoted - strings. */ + strings. Also, ignore the char within a template name, like a ',' + within foo. */ + static char * find_toplevel_char (char *s, char c) { @@ -321,9 +323,9 @@ find_toplevel_char (char *s, char c) return scan; else if (*scan == '"' || *scan == '\'') quoted = *scan; - else if (*scan == '(') + else if (*scan == '(' || *scan == '<') depth++; - else if (*scan == ')' && depth > 0) + else if ((*scan == ')' || *scan == '>') && depth > 0) depth--; }