diff options
author | Elena Zannoni <ezannoni@kwikemart.cygnus.com> | 2002-05-10 00:29:23 +0000 |
---|---|---|
committer | Elena Zannoni <ezannoni@kwikemart.cygnus.com> | 2002-05-10 00:29:23 +0000 |
commit | 17b8b0ac2600c03d4ac6ad03ae444f2e623f095b (patch) | |
tree | 78aabed0f2784a626a32c3d16fb08362837ad207 /gdb/linespec.c | |
parent | 47627b0bef35adda50fc76a182261c0b703a565b (diff) | |
download | gdb-17b8b0ac2600c03d4ac6ad03ae444f2e623f095b.tar.gz |
2002-05-09 Elena Zannoni <ezannoni@redhat.com>
From Daniel Berlin <dan@cgsoftware.com>
* linespec.c (find_toplevel_char): '<' and '>' also increase and
decrease the depth we are at, in the case of templates.
Diffstat (limited to 'gdb/linespec.c')
-rw-r--r-- | gdb/linespec.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/gdb/linespec.c b/gdb/linespec.c index cbfafcfb955..b9a772c9ad1 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<int, int>. */ + 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--; } |