src/Pure/Concurrent/mailbox.ML
changeset 28158 96cbf4afdc7d
parent 28147 b44a7b259909
child 28170 a18cf8a0e656
--- a/src/Pure/Concurrent/mailbox.ML	Sun Sep 07 22:19:46 2008 +0200
+++ b/src/Pure/Concurrent/mailbox.ML	Sun Sep 07 22:19:58 2008 +0200
@@ -53,13 +53,7 @@
         ConditionVar.waitUntil (cond, lock, limit) andalso check ();
       val ok = restore_attributes check ()
         handle Interrupt => (Mutex.unlock lock; raise Interrupt);
-      val res =
-        if ok then
-          let
-            val (msg, msgs) = Queue.dequeue (! messages);
-            val _ = messages := msgs;
-          in SOME msg end
-        else NONE;
+      val res = if ok then SOME (change_result messages Queue.dequeue) else NONE;
 
       val _ = Mutex.unlock lock;
     in res end) ();