From: Tom Tromey Date: Thu, 19 Mar 2009 17:39:31 +0000 (+0000) Subject: * utils.c (do_obstack_free): New function. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=16ad93705cfed2630f48ba44b7dde9d20a4c6f44;p=binutils-gdb.git * utils.c (do_obstack_free): New function. (make_cleanup_obstack_free): Likewise. * defs.h (make_cleanup_obstack_free): Declare. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b96ecc36657..107396ea20b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2009-03-19 Tom Tromey + + * utils.c (do_obstack_free): New function. + (make_cleanup_obstack_free): Likewise. + * defs.h (make_cleanup_obstack_free): Declare. + 2009-03-18 Doug Evans * linux-nat.c (linux_nat_find_memory_regions): Result of PIDGET is an diff --git a/gdb/defs.h b/gdb/defs.h index 001db816a6b..e140474bb49 100644 --- a/gdb/defs.h +++ b/gdb/defs.h @@ -366,6 +366,9 @@ extern struct cleanup *make_cleanup_fclose (FILE *file); extern struct cleanup *make_cleanup_bfd_close (bfd *abfd); +struct obstack; +extern struct cleanup *make_cleanup_obstack_free (struct obstack *obstack); + extern struct cleanup *make_cleanup_restore_integer (int *variable); extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *); diff --git a/gdb/utils.c b/gdb/utils.c index 92248391eed..0becfd97bb7 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -271,6 +271,23 @@ make_cleanup_fclose (FILE *file) return make_cleanup (do_fclose_cleanup, file); } +/* Helper function which does the work for make_cleanup_obstack_free. */ + +static void +do_obstack_free (void *arg) +{ + struct obstack *ob = arg; + obstack_free (ob, NULL); +} + +/* Return a new cleanup that frees OBSTACK. */ + +struct cleanup * +make_cleanup_obstack_free (struct obstack *obstack) +{ + return make_cleanup (do_obstack_free, obstack); +} + static void do_ui_file_delete (void *arg) {