From b1c69a9397b0b265cbcfc4e03cadc0ba64867b71 Mon Sep 17 00:00:00 2001 From: tromey Date: Thu, 19 Mar 2009 17:39:30 +0000 Subject: [PATCH] * utils.c (do_obstack_free): New function. (make_cleanup_obstack_free): Likewise. * defs.h (make_cleanup_obstack_free): Declare. --- gdb/ChangeLog | 6 ++++++ gdb/defs.h | 3 +++ gdb/utils.c | 17 +++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b96ecc3665..107396ea20 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 001db816a6..e140474bb4 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 92248391ee..0becfd97bb 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) { -- 2.11.0