* td_ta_event_getmsg.c (td_ta_event_getmsg): Write the NEXT pointer
authorRoland McGrath <roland@gnu.org>
Mon, 9 Dec 2002 10:49:37 +0000 (10:49 +0000)
committerRoland McGrath <roland@gnu.org>
Mon, 9 Dec 2002 10:49:37 +0000 (10:49 +0000)
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
nptl_db/td_ta_event_getmsg.c

index 8726260..2a760bf 100644 (file)
@@ -1,3 +1,10 @@
+2002-12-06  Roland McGrath  <roland@redhat.com>
+
+       * 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  <roland@redhat.com>
 
        * td_thr_get_info.c (td_thr_get_info): ti_tid is pthread_t, not a PID.
index 4e3245d..919ba65 100644 (file)
@@ -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;