+2010-02-16 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * gcore.c (do_bfd_delete_cleanup): New function.
+ (gcore_command): Use it. Discard the cleanup after success.
+ (gcore_copy_callback): Delete dead code.
+
2010-02-16 Daniel Jacobowitz <dan@codesourcery.com>
* symfile.c (addr_info_make_relative): Always use
}
}
+static void
+do_bfd_delete_cleanup (void *arg)
+{
+ bfd *obfd = arg;
+ const char *filename = obfd->filename;
+
+ bfd_close (arg);
+ unlink (filename);
+}
+
/* gcore_command -- implements the 'gcore' command.
Generate a core file from the inferior process. */
/* Open the output file. */
obfd = create_gcore_bfd (corefilename);
- /* Need a cleanup that will close the file (FIXME: delete it?). */
- old_chain = make_cleanup_bfd_close (obfd);
+ /* Need a cleanup that will close and delete the file. */
+ old_chain = make_cleanup (do_bfd_delete_cleanup, obfd);
/* Call worker function. */
write_gcore_file (obfd);
/* Succeeded. */
fprintf_filtered (gdb_stdout, "Saved corefile %s\n", corefilename);
- /* Clean-ups will close the output file and free malloc memory. */
- do_cleanups (old_chain);
- return;
+ discard_cleanups (old_chain);
+ bfd_close (obfd);
}
static unsigned long
size = min (total_size, MAX_COPY_BYTES);
memhunk = xmalloc (size);
- /* ??? This is crap since xmalloc should never return NULL. */
- if (memhunk == NULL)
- error (_("Not enough memory to create corefile."));
old_chain = make_cleanup (xfree, memhunk);
while (total_size > 0)