summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeal H. Walfield <neal@gnu.org>2008-12-16 19:38:08 +0100
committerNeal H. Walfield <neal@gnu.org>2008-12-16 19:38:08 +0100
commit465d6fa4fcf836482088e5e263fc26da03feff44 (patch)
tree71a9ce9a54415ab511bb148e5d145a5fd3552a5c
parentef89b0b04a2daf78eb2990b459454f34da05ffc2 (diff)
Don't assume that a messenger is able to activate its associated thread.
2008-12-16 Neal H. Walfield <neal@gnu.org> * thread.c (thread_deliver_pending): Only unlink M if it successfully activates its associated thread.
-rw-r--r--viengoos/ChangeLog5
-rw-r--r--viengoos/thread.c7
2 files changed, 7 insertions, 5 deletions
diff --git a/viengoos/ChangeLog b/viengoos/ChangeLog
index 26b8bf9..670b395 100644
--- a/viengoos/ChangeLog
+++ b/viengoos/ChangeLog
@@ -1,5 +1,10 @@
2008-12-16 Neal H. Walfield <neal@gnu.org>
+ * thread.c (thread_deliver_pending): Only unlink M if it
+ successfully activates its associated thread.
+
+2008-12-16 Neal H. Walfield <neal@gnu.org>
+
* server.c (server_loop): Only set SOURCE->BUFFER if the message
is not inline.
diff --git a/viengoos/thread.c b/viengoos/thread.c
index bdba441..6d63971 100644
--- a/viengoos/thread.c
+++ b/viengoos/thread.c
@@ -646,11 +646,8 @@ thread_deliver_pending (struct activity *activity,
object_wait_queue_for_each (activity, (struct object *) thread, m)
if (m->wait_reason == MESSENGER_WAIT_TRANSFER_MESSAGE)
{
- object_wait_queue_unlink (activity, m);
- m->wait_reason = MESSENGER_WAIT_TRANSFER_MESSAGE;
-
- bool ret = thread_activate (activity, thread, m, false);
- assert (ret);
+ if (thread_activate (activity, thread, m, false))
+ object_wait_queue_unlink (activity, m);
return;
}