aboutsummaryrefslogtreecommitdiff
path: root/linuxthreads_db/td_thr_setfpregs.c
diff options
context:
space:
mode:
Diffstat (limited to 'linuxthreads_db/td_thr_setfpregs.c')
-rw-r--r--linuxthreads_db/td_thr_setfpregs.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/linuxthreads_db/td_thr_setfpregs.c b/linuxthreads_db/td_thr_setfpregs.c
index a18e1edc1e..0c426b3d36 100644
--- a/linuxthreads_db/td_thr_setfpregs.c
+++ b/linuxthreads_db/td_thr_setfpregs.c
@@ -28,12 +28,14 @@ td_thr_setfpregs (const td_thrhandle_t *th, const prfpregset_t *fpregs)
LOG (__FUNCTION__);
- /* We have to get the PID for this thread. */
+ /* We have to get the state and the PID for this thread. */
if (ps_pdread (th->th_ta_p->ph, th->th_unique, &pds,
sizeof (struct _pthread_descr_struct)) != PS_OK)
return TD_ERR;
- if (ps_lsetfpregs (th->th_ta_p->ph, pds.p_pid, fpregs) != PS_OK)
+ /* Only set the registers if the thread hasn't yet terminated. */
+ if (pds.p_terminated == 0
+ && ps_lsetfpregs (th->th_ta_p->ph, pds.p_pid, fpregs) != PS_OK)
return TD_ERR;
return TD_OK;