diff options
author | Andrew Cagney <cagney@redhat.com> | 2000-06-07 04:43:30 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2000-06-07 04:43:30 +0000 |
commit | 6ecce94d4826f27539dcd85265a07ed6bd54f7ba (patch) | |
tree | d8581850cbcab04a0482a3fbd9ce5b58956e4a80 /gdb/thread.c | |
parent | b4a20239906ec8ba36a98e03d56d91603ce3ebb7 (diff) | |
download | gdb-6ecce94d4826f27539dcd85265a07ed6bd54f7ba.zip gdb-6ecce94d4826f27539dcd85265a07ed6bd54f7ba.tar.gz gdb-6ecce94d4826f27539dcd85265a07ed6bd54f7ba.tar.bz2 |
Purge last remaining make_cleanup_func.
Diffstat (limited to 'gdb/thread.c')
-rw-r--r-- | gdb/thread.c | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/gdb/thread.c b/gdb/thread.c index 2c87470..38e74d4 100644 --- a/gdb/thread.c +++ b/gdb/thread.c @@ -519,6 +519,28 @@ restore_current_thread (pid) } } +struct current_thread_cleanup +{ + int inferior_pid; +}; + +static void +do_restore_current_thread_cleanup (void *arg) +{ + struct current_thread_cleanup *old = arg; + restore_current_thread (old->inferior_pid); + free (old); +} + +static struct cleanup * +make_cleanup_restore_current_thread (int inferior_pid) +{ + struct current_thread_cleanup *old + = xmalloc (sizeof (struct current_thread_cleanup)); + old->inferior_pid = inferior_pid; + return make_cleanup (do_restore_current_thread_cleanup, old); +} + /* Apply a GDB command to a list of threads. List syntax is a whitespace seperated list of numbers, or ranges, or the keyword `all'. Ranges consist of two numbers seperated by a hyphen. Examples: @@ -539,8 +561,7 @@ thread_apply_all_command (cmd, from_tty) if (cmd == NULL || *cmd == '\000') error ("Please specify a command following the thread ID list"); - old_chain = make_cleanup ((make_cleanup_func) restore_current_thread, - (void *) inferior_pid); + old_chain = make_cleanup_restore_current_thread (inferior_pid); for (tp = thread_list; tp; tp = tp->next) if (thread_alive (tp)) @@ -556,6 +577,8 @@ thread_apply_all_command (cmd, from_tty) #endif execute_command (cmd, from_tty); } + + do_cleanups (old_chain); } static void @@ -575,8 +598,7 @@ thread_apply_command (tidlist, from_tty) if (*cmd == '\000') error ("Please specify a command following the thread ID list"); - old_chain = make_cleanup ((make_cleanup_func) restore_current_thread, - (void *) inferior_pid); + old_chain = make_cleanup_restore_current_thread (inferior_pid); while (tidlist < cmd) { @@ -627,6 +649,8 @@ thread_apply_command (tidlist, from_tty) } } } + + do_cleanups (old_chain); } /* Switch to the specified thread. Will dispatch off to thread_apply_command |