]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
Fix bug in previous remote unique_ptr change
authorPedro Alves <pedro@palves.net>
Wed, 20 Dec 2023 20:11:23 +0000 (20:11 +0000)
committerPedro Alves <pedro@palves.net>
Wed, 20 Dec 2023 20:24:15 +0000 (20:24 +0000)
commitaed77b16f17fc3ed9c952af632674dc25d0dfdb5
treedb1a21d39a049694c294afd4c5db723b8619f20b
parente21633812306a23d454e1a63fa57a5b689cddcbb
Fix bug in previous remote unique_ptr change

By inspection, I noticed that the previous patch went too far, here:

 @@ -7705,7 +7713,8 @@ remote_target::discard_pending_stop_replies (struct inferior *inf)
    if (rs->remote_desc == NULL)
      return;

 -  reply = (struct stop_reply *) rns->pending_event[notif_client_stop.id];
 +  stop_reply_up reply
 +    = as_stop_reply_up (std::move (rns->pending_event[notif_client_stop.id]));

    /* Discard the in-flight notification.  */
    if (reply != NULL && reply->ptid.pid () == inf->pid)

That is always moving the stop reply from pending_event, when we only
really want to peek into it.  The code further below that even says:

  /* Discard the in-flight notification.  */
  if (reply != NULL && reply->ptid.pid () == inf->pid)
    {
      /* Leave the notification pending, since the server expects that
 we acknowledge it with vStopped.  But clear its contents, so
 that later on when we acknowledge it, we also discard it.  */

This commit reverts that hunk back, adjusted to use unique_ptr::get().

Change-Id: Ifc809d1a8225150a4656889f056d51267100ee24
gdb/remote.c