aboutsummaryrefslogtreecommitdiff
path: root/libiberty
diff options
context:
space:
mode:
Diffstat (limited to 'libiberty')
-rw-r--r--libiberty/ChangeLog5
-rw-r--r--libiberty/cplus-dem.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index dc92638..2c1252f 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,8 @@
+2011-03-04 Michael Snyder <msnyder@vmware.com>
+
+ * cplus-dem.c (ada_demangle): Stop memory leak.
+ Also fix a one line indent problem.
+
2011-02-28 Kai Tietz <kai.tietz@onevision.com>
* filename_cmp.c (filename_ncmp): New function.
diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c
index 84f94b6..6cd9a41 100644
--- a/libiberty/cplus-dem.c
+++ b/libiberty/cplus-dem.c
@@ -883,7 +883,7 @@ ada_demangle (const char *mangled, int option ATTRIBUTE_UNUSED)
int len0;
const char* p;
char *d;
- char *demangled;
+ char *demangled = NULL;
/* Discard leading _ada_, which is used for library level subprograms. */
if (strncmp (mangled, "_ada_", 5) == 0)
@@ -1129,10 +1129,11 @@ ada_demangle (const char *mangled, int option ATTRIBUTE_UNUSED)
unknown:
len0 = strlen (mangled);
+ free (demangled);
demangled = XNEWVEC (char, len0 + 3);
if (mangled[0] == '<')
- strcpy (demangled, mangled);
+ strcpy (demangled, mangled);
else
sprintf (demangled, "<%s>", mangled);