On Thu, Nov 21, 2013 at 1:22 PM, Cary Coutant <ccout...@google.com> wrote: > I've made a small revision to this patch to handle recursive > invocations of d_expression and d_operator_name, restoring the > previous values of is_expression and is_conversion instead of just > setting them to 0 upon return. I've also added the long test case that > results in a substitution misnumbering in the current demangler. > > -cary > > >> 2013-11-19 Cary Coutant <ccout...@google.com> >> >> libiberty/ >> PR other/59195 >> * cp-demangle.c (struct d_info_checkpoint): New struct. >> (struct d_print_info): Add current_template field. >> (d_operator_name): Set flag when processing a conversion >> operator. >> (cplus_demangle_type): When processing <template-args> for >> a conversion operator, backtrack if necessary. >> (d_expression_1): Renamed from d_expression. >> (d_expression): New wrapper around d_expression_1. >> (d_checkpoint): New function. >> (d_backtrack): New function. >> (d_print_init): Initialize current_template. >> (d_print_comp): Set current_template. >> (d_print_cast): Put current_template in scope for >> printing conversion operator name. >> (cplus_demangle_init_info): Initialize is_expression and >> is_conversion. >> * cp-demangle.h (struct d_info): Add is_expression and >> is_conversion fields. >> * testsuite/demangle-expected: New test cases.
This is OK. Thanks. Ian