From mboxrd@z Thu Jan 1 00:00:00 1970 From: Elena Zannoni To: Daniel Berlin Cc: gdb-patches@sources.redhat.com Subject: Re: [RFA] linespec.c change to stop "malformed template specification" error Date: Wed, 06 Jun 2001 16:09:00 -0000 Message-id: <15134.47162.825017.119342@kwikemart.cygnus.com> References: <87ofsldrgr.fsf@dynamic-addr-83-177.resnet.rochester.edu> X-SW-Source: 2001-06/msg00103.html Daniel Berlin writes: > This error is cause by find_toplevel_char not knowing that '<' and '>' > increase and decrease the depth we are at. > > The result is that if you say "break _Rb_tree", when it goes > to look for a comma at the top level, it thinks it found one right > after the "int", and temporarily truncates the string to '_Rb_tree When we then proceed to go through the string, we see the "<", and > then go to find the end of the template name, and can't, because we've > truncated the string in the wrong place, and issue an error. > > Cute, no? > > --Dan > Seems OK to me, but could you update the comment on top of the find_toplevel_char() to reflect that the char is looked for also outside of '<' and '>' pairs? Any of the other maintainers (Jim, Fernando) has any comments? Thanks Elena > > 2001-05-22 Daniel Berlin > > * linespec.c (find_toplevel_char): '<' and '>' also increase and > decrease the depth we are at, in the case of templates. > > > Index: linespec.c > =================================================================== > RCS file: /cvs/src/src/gdb/linespec.c,v > retrieving revision 1.11 > diff -c -3 -p -r1.11 linespec.c > *** linespec.c 2001/04/27 00:19:09 1.11 > --- linespec.c 2001/05/22 20:58:12 > *************** find_toplevel_char (char *s, char c) > *** 274,282 **** > return scan; > else if (*scan == '"' || *scan == '\'') > quoted = *scan; > ! else if (*scan == '(') > depth++; > ! else if (*scan == ')' && depth > 0) > depth--; > } > > --- 274,282 ---- > return scan; > else if (*scan == '"' || *scan == '\'') > quoted = *scan; > ! else if (*scan == '(' || *scan == '<') > depth++; > ! else if ((*scan == ')' || *scan == '>') && depth > 0) > depth--; > } > > > -- > "In my house on the ceilings I have paintings of the rooms > above... So I never have to go upstairs. > "-Steven Wright >