From eec65ede89d0e086c43206a66614598101f270b4 Mon Sep 17 00:00:00 2001 From: Joel Brobecker Date: Mon, 20 Oct 2003 23:50:37 +0000 Subject: [PATCH] * cplus-dem.c (demangle_template): Register a new Btype only when needed. * testsuite/demangle-expected: Add a new test. --- libiberty/ChangeLog | 6 ++++++ libiberty/cplus-dem.c | 8 ++++---- libiberty/testsuite/demangle-expected | 6 ++++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 04aa508408..6264fbf5a0 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,9 @@ +2003-10-20 J. Brobecker + + * cplus-dem.c (demangle_template): Register a new Btype only + when needed. + * testsuite/demangle-expected: Add a new test. + 2003-10-16 H.J. Lu * testsuite/demangle-expected: Update the expected output of diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c index 59afcd371b..5e2e7a7126 100644 --- a/libiberty/cplus-dem.c +++ b/libiberty/cplus-dem.c @@ -2043,13 +2043,10 @@ demangle_template (work, mangled, tname, trawname, is_type, remember) const char *start; int is_java_array = 0; string temp; - int bindex = 0; (*mangled)++; if (is_type) { - if (remember) - bindex = register_Btype (work); start = *mangled; /* get template name */ if (**mangled == 'z') @@ -2226,7 +2223,10 @@ demangle_template (work, mangled, tname, trawname, is_type, remember) } if (is_type && remember) - remember_Btype (work, tname->b, LEN_STRING (tname), bindex); + { + const int bindex = register_Btype (work); + remember_Btype (work, tname->b, LEN_STRING (tname), bindex); + } /* if (work -> static_type) diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected index dabcc1953c..d57066651b 100644 --- a/libiberty/testsuite/demangle-expected +++ b/libiberty/testsuite/demangle-expected @@ -2864,3 +2864,9 @@ r(int (G::*)(), int (G::*)() const, G, int (H::*)(), int (G::*)(), what --format=auto __CPR212____ct__Q3_3std141list__tm__128_Q2_3edm41THandle__tm__26_Q2_4emid15EMparticleChunkQ2_3std68allocator__tm__51_Q2_3edmJ37J14const_iteratorFRCQ3_3std18list__tm__7_Z1ZZ2Z8iterator __CPR212____ct__Q3_3std141list__tm__128_Q2_3edm41THandle__tm__26_Q2_4emid15EMparticleChunkQ2_3std68allocator__tm__51_Q2_3edmJ37J14const_iteratorFRCQ3_3std18list__tm__7_Z1ZZ2Z8iterator +# +# This used to cause a crash. It doesn't follow the C++ syntax so +# the demangled name should be identical to the original symbol name. +--format=auto +_test_array__L_1__B23b___clean.6 +_test_array__L_1__B23b___clean.6 -- 2.34.1