summaryrefslogtreecommitdiff
path: root/libiberty
diff options
context:
space:
mode:
authorDJ Delorie <dj@delorie.com>2000-12-05 19:08:13 +0000
committerDJ Delorie <dj@delorie.com>2000-12-05 19:08:13 +0000
commit9c0d05a1b1738fdb45dd016d6a415d66a4fd4af7 (patch)
tree0baf94c16fe3dd55d776a2712f47f6b4fd4091fd /libiberty
parenta329719d29a181627b851fabc3725b1062e7c2c3 (diff)
downloadgdb-9c0d05a1b1738fdb45dd016d6a415d66a4fd4af7.tar.gz
* cp-demangle.c (cplus_demangle_v3): Check that it's a v3 mangled
name before allocating the dyn_string.
Diffstat (limited to 'libiberty')
-rw-r--r--libiberty/ChangeLog5
-rw-r--r--libiberty/cp-demangle.c12
2 files changed, 15 insertions, 2 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 33f39fe81ca..5b1af4ac241 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,5 +1,10 @@
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/.
* cplus-dem.c: Likewise.
(current_demangling_style): Now auto_demangling.
diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
index 5787f74744f..1cc4847d4e7 100644
--- a/libiberty/cp-demangle.c
+++ b/libiberty/cp-demangle.c
@@ -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. */
{