summaryrefslogtreecommitdiffstats
path: root/libiberty
diff options
context:
space:
mode:
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>1998-08-17 18:39:16 +0000
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>1998-08-17 18:39:16 +0000
commit8f2cc44d331b97db17e5cf3c94a39f1ee4f002b5 (patch)
treea703f61ad7474aa09c1d9eb9528b80799606575b /libiberty
parent0019e781b5a58fa6bd1d46d09cf3e81637806bf8 (diff)
downloadppe42-gcc-8f2cc44d331b97db17e5cf3c94a39f1ee4f002b5.tar.gz
ppe42-gcc-8f2cc44d331b97db17e5cf3c94a39f1ee4f002b5.zip
* 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
Diffstat (limited to 'libiberty')
-rw-r--r--libiberty/ChangeLog5
-rw-r--r--libiberty/cplus-dem.c17
2 files changed, 16 insertions, 6 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 1cb3bdbf8dd..30a7920bd54 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,8 @@
+1998-08-17 Jason Merrill <jason@yorick.cygnus.com>
+
+ * cplus-dem.c (do_type): Fix simple array handling. If we fail,
+ stay failed.
+
Mon Aug 17 10:40:34 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* cplus-dem.c: Include config.h if it exists. Also, only
diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c
index 60c3ce96528..1f3dc529efa 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;
OpenPOWER on IntegriCloud