2011-03-04 Michael Snyder <msnyder@vmware.com>
authorMichael Snyder <msnyder@vmware.com>
Fri, 4 Mar 2011 18:25:32 +0000 (18:25 +0000)
committerMichael Snyder <msnyder@vmware.com>
Fri, 4 Mar 2011 18:25:32 +0000 (18:25 +0000)
* cplus-dem.c (ada_demangle): Stop memory leak.
Also fix a one line indent problem.

libiberty/ChangeLog
libiberty/cplus-dem.c

index dc92638..2c1252f 100644 (file)
@@ -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.
index 84f94b6..6cd9a41 100644 (file)
@@ -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);