From: brobecke Date: Mon, 20 Oct 2003 23:21:30 +0000 (+0000) Subject: * cplus-dem.c (demangle_template): Register a new Btype only X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=147ca737b567b6e3f764c6b8f3a17c35f4cdc8f4 * cplus-dem.c (demangle_template): Register a new Btype only when needed. * testsuite/demangle-expected: Add a new test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72729 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 04aa508408d..6264fbf5a0b 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 59afcd371ba..5e2e7a7126c 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 dabcc1953c2..8dfab8e9bd0 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++ encoding 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