From 58a851f1082519eab4b881036dea70a8ef052f25 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Mon, 9 Dec 2002 10:49:37 +0000 Subject: * td_ta_event_getmsg.c (td_ta_event_getmsg): Write the NEXT pointer into the inferior's __pthread_last_event variable, not a word from an inferior address used in the parent. Pass the address of a null word to ps_pdwrite, not a null pointer. --- nptl_db/ChangeLog | 7 +++++++ nptl_db/td_ta_event_getmsg.c | 9 +++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/nptl_db/ChangeLog b/nptl_db/ChangeLog index 8726260509..2a760bf642 100644 --- a/nptl_db/ChangeLog +++ b/nptl_db/ChangeLog @@ -1,3 +1,10 @@ +2002-12-06 Roland McGrath + + * td_ta_event_getmsg.c (td_ta_event_getmsg): Write the NEXT pointer + into the inferior's __pthread_last_event variable, not a word from + an inferior address used in the parent. Pass the address of a + null word to ps_pdwrite, not a null pointer. + 2002-12-04 Roland McGrath * td_thr_get_info.c (td_thr_get_info): ti_tid is pthread_t, not a PID. diff --git a/nptl_db/td_ta_event_getmsg.c b/nptl_db/td_ta_event_getmsg.c index 4e3245d07b..919ba6569b 100644 --- a/nptl_db/td_ta_event_getmsg.c +++ b/nptl_db/td_ta_event_getmsg.c @@ -43,11 +43,11 @@ td_ta_event_getmsg (const td_thragent_t *ta, td_event_msg_t *msg) &addr, sizeof (struct pthread *)) != PS_OK) return TD_ERR; /* XXX Other error value? */ - /* Read the even structure from the target. */ if (addr == 0) + /* Nothing waiting. */ return TD_NOMSG; - /* Read the even structure from the target. */ + /* Read the event structure from the target. */ td_eventbuf_t event; if (ps_pdread (ta->ph, (char *) addr + offsetof (struct pthread, eventbuf), &event, sizeof (td_eventbuf_t)) != PS_OK) @@ -73,12 +73,13 @@ td_ta_event_getmsg (const td_thragent_t *ta, td_event_msg_t *msg) /* Store the pointer in the list head variable. */ if (ps_pdwrite (ta->ph, ta->pthread_last_event, - addr, sizeof (struct pthread *)) != PS_OK) + &next, sizeof (struct pthread *)) != PS_OK) return TD_ERR; /* XXX Other error value? */ /* Clear the next pointer in the current descriptor. */ + next = NULL; if (ps_pdwrite (ta->ph, (char *) addr + offsetof (struct pthread, nextevent), - NULL, sizeof (struct pthread *)) != PS_OK) + &next, sizeof (struct pthread *)) != PS_OK) return TD_ERR; /* XXX Other error value? */ return TD_OK; -- cgit v1.2.3