2002-05-09 Elena Zannoni <ezannoni@redhat.com>
authorElena Zannoni <ezannoni@kwikemart.cygnus.com>
Fri, 10 May 2002 00:29:23 +0000 (00:29 +0000)
committerElena Zannoni <ezannoni@kwikemart.cygnus.com>
Fri, 10 May 2002 00:29:23 +0000 (00:29 +0000)
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.

gdb/ChangeLog
gdb/linespec.c

index 6f9e14d5970d3e5d08b2b92edb74621afb1a041d..57c8afc088b56ec43c2a5b6019fc34414adb009f 100644 (file)
@@ -1,3 +1,9 @@
+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.
+       
 2002-05-09  Daniel Jacobowitz  <drow@mvista.com>
 
        * mips-tdep.c (mips_float_register_type): New function.
index cbfafcfb955f8a366175c5bccd085c9797544d9b..b9a772c9ad15509f92f27079fdb4a9bc3ff8b20c 100644 (file)
@@ -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--;
     }