aboutsummaryrefslogtreecommitdiff
path: root/gdb/remote.c
diff options
context:
space:
mode:
authorPedro Alves <pedro@palves.net>2023-12-20 20:11:23 +0000
committerPedro Alves <pedro@palves.net>2023-12-20 20:24:15 +0000
commitaed77b16f17fc3ed9c952af632674dc25d0dfdb5 (patch)
treedb1a21d39a049694c294afd4c5db723b8619f20b /gdb/remote.c
parente21633812306a23d454e1a63fa57a5b689cddcbb (diff)
downloadfsf-binutils-gdb-aed77b16f17fc3ed9c952af632674dc25d0dfdb5.zip
fsf-binutils-gdb-aed77b16f17fc3ed9c952af632674dc25d0dfdb5.tar.gz
fsf-binutils-gdb-aed77b16f17fc3ed9c952af632674dc25d0dfdb5.tar.bz2
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
Diffstat (limited to 'gdb/remote.c')
-rw-r--r--gdb/remote.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gdb/remote.c b/gdb/remote.c
index f3823bb..dcc1a0d 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -7713,8 +7713,9 @@ remote_target::discard_pending_stop_replies (struct inferior *inf)
if (rs->remote_desc == NULL)
return;
- stop_reply_up reply
- = as_stop_reply_up (std::move (rns->pending_event[notif_client_stop.id]));
+ struct notif_event *notif_event
+ = rns->pending_event[notif_client_stop.id].get ();
+ auto *reply = static_cast<stop_reply *> (notif_event);
/* Discard the in-flight notification. */
if (reply != NULL && reply->ptid.pid () == inf->pid)