* remap.c (remap_debug_filename): Always allocate a buffer for the
authorNick Clifton <nickc@redhat.com>
Fri, 11 Mar 2011 14:18:24 +0000 (14:18 +0000)
committerNick Clifton <nickc@redhat.com>
Fri, 11 Mar 2011 14:18:24 +0000 (14:18 +0000)
returned pointer.
* stabs.c (stabs_generate_asm_file): Free the pointer returned by
remap_debug_filename.

gas/ChangeLog
gas/remap.c
gas/stabs.c

index 437768ed5f6bb564e06a0cfb58732e1a07638e3a..4cffafc3def532053a6127b9a2e1bf5257ceef0f 100644 (file)
@@ -1,3 +1,10 @@
+2011-03-11  Nick Clifton  <nickc@redhat.com>
+
+       * remap.c (remap_debug_filename): Always allocate a buffer for the
+       returned pointer.
+       * stabs.c (stabs_generate_asm_file): Free the pointer returned by
+       remap_debug_filename.
+
 2011-03-10  Michael Snyder  <msnyder@vmware.com>
 
        Revert the following change:
index 0c863fb10d082ec0431b593da48cbfa23f16e8be..ae9b9ddaa9cfb5094652e4710ac7db20693b2b83 100644 (file)
@@ -65,8 +65,9 @@ add_debug_prefix_map (const char *arg)
   debug_prefix_maps = map;
 }
 
-/* Perform user-specified mapping of debug filename prefixes.  Return
-   the new name corresponding to FILENAME.  */
+/* Perform user-specified mapping of debug filename prefixes.  Returns
+   a newly allocated buffer containing the name corresponding to FILENAME.
+   It is the caller's responsibility to free the buffer.  */
 
 const char *
 remap_debug_filename (const char *filename)
@@ -80,7 +81,7 @@ remap_debug_filename (const char *filename)
     if (filename_ncmp (filename, map->old_prefix, map->old_len) == 0)
       break;
   if (!map)
-    return filename;
+    return xstrdup (filename);
   name = filename + map->old_len;
   name_len = strlen (name) + 1;
   s = (char *) alloca (name_len + map->new_len);
index f197ebdac73ed1664b920b0ce2024e85c9d12d47..e0594fa5d4ed2a6b15c3527c19784cf656308fa5 100644 (file)
@@ -502,6 +502,7 @@ stabs_generate_asm_file (void)
       dir2 = (char *) alloca (strlen (dir) + 2);
       sprintf (dir2, "%s%s", dir, "/");
       generate_asm_file (N_SO, dir2);
+      xfree ((char *) dir);
     }
   generate_asm_file (N_SO, file);
 }