]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* cplus-dem.c (do_type): Fix simple array handling. If we fail,
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 17 Aug 1998 18:39:16 +0000 (18:39 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 17 Aug 1998 18:39:16 +0000 (18:39 +0000)
stay failed.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@21798 138bc75d-0d04-0410-961f-82ee72b054a4

libiberty/ChangeLog
libiberty/cplus-dem.c

index 1cb3bdbf8dd8ee58556b9e2e457fa6d1b3d242bb..30a7920bd54bd6347cc2c7d15eeb15ee879beedd 100644 (file)
@@ -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
index 60c3ce96528800f40d548c080bef0530158c49e4..1f3dc529efa13762f1b0042e12eb7873b8283e0b 100644 (file)
@@ -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;