* cp-demangle.c (cplus_demangle_v3): Check that it's a v3 mangled
authorDJ Delorie <dj@redhat.com>
Tue, 5 Dec 2000 19:08:13 +0000 (19:08 +0000)
committerDJ Delorie <dj@redhat.com>
Tue, 5 Dec 2000 19:08:13 +0000 (19:08 +0000)
name before allocating the dyn_string.

libiberty/ChangeLog
libiberty/cp-demangle.c

index 33f39fe81cabb9142942d9a2a905df90c7a36fb9..5b1af4ac241fa2286d6f05c641b96b39c37dfe84 100644 (file)
@@ -1,3 +1,8 @@
+2000-12-05  Jason Merrill  <jason@redhat.com>
+
+       * cp-demangle.c (cplus_demangle_v3): Check that it's a v3 mangled
+       name before allocating the dyn_string.
+
 2000-12-05  Jason Merrill  <jason@redhat.com>
 
        * cp-demangle.c: s/new_abi/v3/.
index 5787f74744f47875810651c4870bcf4a65ad1396..1cc4847d4e7ca5b1527034b3d7058e1d7010070f 100644 (file)
@@ -3600,10 +3600,18 @@ char *
 cplus_demangle_v3 (mangled)
      const char* mangled;
 {
+  dyn_string_t demangled;
+  status_t status;
+
+  /* If this isn't a mangled name, don't pretend to demangle it.  */
+  if (strncmp (mangled, "_Z", 2) != 0)
+    return NULL;
+
   /* Create a dyn_string to hold the demangled name.  */
-  dyn_string_t demangled = dyn_string_new (0);
+  demangled = dyn_string_new (0);
   /* Attempt the demangling.  */
-  status_t status = cp_demangle ((char *) mangled, demangled);
+  status = cp_demangle ((char *) mangled, demangled);
+
   if (STATUS_NO_ERROR (status))
     /* Demangling succeeded.  */
     {