* 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().
This commit is contained in:
parent
f7db6139df
commit
7c952b6dae
2 changed files with 26 additions and 15 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2000-07-19 Nicholas Duffek <nsd@redhat.com>
|
||||||
|
|
||||||
|
* 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().
|
||||||
|
|
||||||
2000-07-19 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
|
2000-07-19 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
|
||||||
|
|
||||||
Multiarch the sh target.
|
Multiarch the sh target.
|
||||||
|
|
34
gdb/thread.c
34
gdb/thread.c
|
@ -63,22 +63,38 @@ static void restore_current_thread (int);
|
||||||
static void switch_to_thread (int pid);
|
static void switch_to_thread (int pid);
|
||||||
static void prune_threads (void);
|
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
|
void
|
||||||
init_thread_list ()
|
init_thread_list ()
|
||||||
{
|
{
|
||||||
struct thread_info *tp, *tpnext;
|
struct thread_info *tp, *tpnext;
|
||||||
|
|
||||||
|
highest_thread_num = 0;
|
||||||
if (!thread_list)
|
if (!thread_list)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (tp = thread_list; tp; tp = tpnext)
|
for (tp = thread_list; tp; tp = tpnext)
|
||||||
{
|
{
|
||||||
tpnext = tp->next;
|
tpnext = tp->next;
|
||||||
free (tp);
|
free_thread (tp);
|
||||||
}
|
}
|
||||||
|
|
||||||
thread_list = NULL;
|
thread_list = NULL;
|
||||||
highest_thread_num = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* add_thread now returns a pointer to the new thread_info,
|
/* add_thread now returns a pointer to the new thread_info,
|
||||||
|
@ -134,19 +150,7 @@ delete_thread (pid)
|
||||||
else
|
else
|
||||||
thread_list = tp->next;
|
thread_list = tp->next;
|
||||||
|
|
||||||
/* NOTE: this will take care of any left-over step_resume breakpoints,
|
free_thread (tp);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct thread_info *
|
static struct thread_info *
|
||||||
|
|
Loading…
Reference in a new issue