From: jason Date: Mon, 17 Aug 1998 18:39:16 +0000 (+0000) Subject: * cplus-dem.c (do_type): Fix simple array handling. If we fail, X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8f2cc44d331b97db17e5cf3c94a39f1ee4f002b5;p=thirdparty%2Fgcc.git * cplus-dem.c (do_type): Fix simple array handling. If we fail, stay failed. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@21798 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 1cb3bdbf8dd8..30a7920bd54b 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,8 @@ +1998-08-17 Jason Merrill + + * cplus-dem.c (do_type): Fix simple array handling. If we fail, + stay failed. + Mon Aug 17 10:40:34 1998 Kaveh R. Ghazi * cplus-dem.c: Include config.h if it exists. Also, only diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c index 60c3ce965288..1f3dc529efa1 100644 --- a/libiberty/cplus-dem.c +++ b/libiberty/cplus-dem.c @@ -2491,10 +2491,15 @@ do_type (work, mangled, result) case 'A': { ++(*mangled); - string_prepend (&decl, "("); - string_append (&decl, ")["); - success = demangle_template_value_parm (work, mangled, &decl, - tk_integral); + if (!STRING_EMPTY (&decl) && decl.b[0] == '*') + { + string_prepend (&decl, "("); + string_append (&decl, ")"); + } + string_append (&decl, "["); + if (**mangled != '_') + success = demangle_template_value_parm (work, mangled, &decl, + tk_integral); if (**mangled == '_') ++(*mangled); string_append (&decl, "]"); @@ -2651,7 +2656,7 @@ do_type (work, mangled, result) } } - switch (**mangled) + if (success) switch (**mangled) { /* A qualified name, such as "Outer::Inner". */ case 'Q': @@ -2665,7 +2670,7 @@ do_type (work, mangled, result) case 'B': (*mangled)++; if (!get_count (mangled, &n) || n >= work -> numb) - success = 0; + success = 0; else string_append (result, work->btypevec[n]); break;