diff options
author | Neal H. Walfield <neal@gnu.org> | 2008-12-16 19:38:08 +0100 |
---|---|---|
committer | Neal H. Walfield <neal@gnu.org> | 2008-12-16 19:38:08 +0100 |
commit | 465d6fa4fcf836482088e5e263fc26da03feff44 (patch) | |
tree | 71a9ce9a54415ab511bb148e5d145a5fd3552a5c | |
parent | ef89b0b04a2daf78eb2990b459454f34da05ffc2 (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/ChangeLog | 5 | ||||
-rw-r--r-- | viengoos/thread.c | 7 |
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; } |