fix one bug in symfile.c
authorTom Tromey <tromey@redhat.com>
Thu, 30 May 2013 17:21:15 +0000 (17:21 +0000)
committerTom Tromey <tromey@redhat.com>
Thu, 30 May 2013 17:21:15 +0000 (17:21 +0000)
find_separate_debug_file could leak a cleanup along some return paths.

* symfile.c (find_separate_debug_file): Call do_cleanups
along all return paths.

gdb/ChangeLog
gdb/symfile.c

index 5331d5b16b3a4ddc05f0b1efcaf5a577ba071ad2..e3e8aa2c71cca44fefe0ef4632b7e32ff517ccd3 100644 (file)
@@ -1,3 +1,8 @@
+2013-05-30  Tom Tromey  <tromey@redhat.com>
+
+       * symfile.c (find_separate_debug_file): Call do_cleanups
+       along all return paths.
+
 2013-05-30  Tom Tromey  <tromey@redhat.com>
 
        * symtab.c (search_symbols): Introduce a null cleanup for
index 360f9993ec65e4c282cfd659f6aad0fc78dce7f5..c2ad7975091ddb138aac3bed5b71d26a33a18c48 100644 (file)
@@ -1428,7 +1428,10 @@ find_separate_debug_file (const char *dir,
       strcat (debugfile, debuglink);
 
       if (separate_debug_file_exists (debugfile, crc32, objfile))
-       return debugfile;
+       {
+         do_cleanups (back_to);
+         return debugfile;
+       }
 
       /* If the file is in the sysroot, try using its base path in the
         global debugfile directory.  */
@@ -1443,7 +1446,10 @@ find_separate_debug_file (const char *dir,
          strcat (debugfile, debuglink);
 
          if (separate_debug_file_exists (debugfile, crc32, objfile))
-           return debugfile;
+           {
+             do_cleanups (back_to);
+             return debugfile;
+           }
        }
     }