Fix a bug in matching notifications.

Due to copy-n-paste, the problem caused PR remote/15974 also exists
in gdbserver.  This patch fixes it in the same way.  Patch to fix
remote/15974 can be found:

  https://sourceware.org/ml/gdb-patches/2013-12/msg00014.html

gdb/gdbserver:

2013-12-11  Yao Qi  <yao@codesourcery.com>

	* notif.c (handle_notif_ack): Return 0 if no notification
	matches.
This commit is contained in:
Yao Qi 2013-12-10 21:59:20 +08:00
parent 7b3fd68b73
commit e7f0d979dd
2 changed files with 14 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2013-12-11 Yao Qi <yao@codesourcery.com>
* notif.c (handle_notif_ack): Return 0 if no notification
matches.
2013-11-20 Doug Evans <dje@google.com>
* linux-low.c (linux_set_resume_request): Fix comment.

View File

@ -78,20 +78,23 @@ notif_write_event (struct notif_server *notif, char *own_buf)
int
handle_notif_ack (char *own_buf, int packet_len)
{
int i = 0;
struct notif_server *np = NULL;
size_t i;
struct notif_server *np;
for (i = 0; i < ARRAY_SIZE (notifs); i++)
{
np = notifs[i];
if (strncmp (own_buf, np->ack_name, strlen (np->ack_name)) == 0
&& packet_len == strlen (np->ack_name))
const char *ack_name = notifs[i]->ack_name;
if (strncmp (own_buf, ack_name, strlen (ack_name)) == 0
&& packet_len == strlen (ack_name))
break;
}
if (np == NULL)
if (i == ARRAY_SIZE (notifs))
return 0;
np = notifs[i];
/* If we're waiting for GDB to acknowledge a pending event,
consider that done. */
if (!QUEUE_is_empty (notif_event_p, np->queue))