aboutsummaryrefslogtreecommitdiff
path: root/gdb/thread.c
diff options
context:
space:
mode:
authorNicholas Duffek <nsd@redhat.com>2000-07-19 21:03:06 +0000
committerNicholas Duffek <nsd@redhat.com>2000-07-19 21:03:06 +0000
commit7c952b6daed25b7bb09e90f524fd4981b0f62284 (patch)
treecc43da5bd0724f8a78ff2ea56c08aa658077e1c2 /gdb/thread.c
parentf7db6139df6e8bb0f5853a973daddcebf6484aaf (diff)
downloadfsf-binutils-gdb-7c952b6daed25b7bb09e90f524fd4981b0f62284.zip
fsf-binutils-gdb-7c952b6daed25b7bb09e90f524fd4981b0f62284.tar.gz
fsf-binutils-gdb-7c952b6daed25b7bb09e90f524fd4981b0f62284.tar.bz2
* thread.c (free_thread): New function.
(init_thread_list): Always zero highest_thread_num. Call free_thread() instead of free(). (delete_thread): Move thread cleanup code to free_thread().
Diffstat (limited to 'gdb/thread.c')
-rw-r--r--gdb/thread.c34
1 files changed, 19 insertions, 15 deletions
diff --git a/gdb/thread.c b/gdb/thread.c
index 38e74d4..00c6467 100644
--- a/gdb/thread.c
+++ b/gdb/thread.c
@@ -63,22 +63,38 @@ static void restore_current_thread (int);
static void switch_to_thread (int pid);
static void prune_threads (void);
+static void
+free_thread (struct thread_info *tp)
+{
+ /* NOTE: this will take care of any left-over step_resume breakpoints,
+ but not any user-specified thread-specific breakpoints. */
+ if (tp->step_resume_breakpoint)
+ delete_breakpoint (tp->step_resume_breakpoint);
+
+ /* FIXME: do I ever need to call the back-end to give it a
+ chance at this private data before deleting the thread? */
+ if (tp->private)
+ free (tp->private);
+
+ free (tp);
+}
+
void
init_thread_list ()
{
struct thread_info *tp, *tpnext;
+ highest_thread_num = 0;
if (!thread_list)
return;
for (tp = thread_list; tp; tp = tpnext)
{
tpnext = tp->next;
- free (tp);
+ free_thread (tp);
}
thread_list = NULL;
- highest_thread_num = 0;
}
/* add_thread now returns a pointer to the new thread_info,
@@ -134,19 +150,7 @@ delete_thread (pid)
else
thread_list = tp->next;
- /* NOTE: this will take care of any left-over step_resume breakpoints,
- but not any user-specified thread-specific breakpoints. */
- if (tp->step_resume_breakpoint)
- delete_breakpoint (tp->step_resume_breakpoint);
-
- /* FIXME: do I ever need to call the back-end to give it a
- chance at this private data before deleting the thread? */
- if (tp->private)
- free (tp->private);
-
- free (tp);
-
- return;
+ free_thread (tp);
}
static struct thread_info *