]> git.pond.sub.org Git - eow/commitdiff
Ensure there actually was an element in the queue to return
authorGerd Flaig <gefla@pond.sub.org>
Sat, 27 Jun 2009 18:04:42 +0000 (20:04 +0200)
committerGerd Flaig <gefla@pond.sub.org>
Sat, 27 Jun 2009 18:04:42 +0000 (20:04 +0200)
locked-queue.lisp

index d225faccc7e7242eb998dcfe897802e70efe3da8..8fd9270e9769cbec8f1fbea29c6a7af3ff1a0799 100644 (file)
@@ -13,9 +13,9 @@
 (defmethod dequeue ((q locked-queue))
   (with-slots (queue mutex waitq) q
     (with-mutex (mutex)
 (defmethod dequeue ((q locked-queue))
   (with-slots (queue mutex waitq) q
     (with-mutex (mutex)
-      (if (or (null queue)
-             (null (first queue)))
-         (condition-wait waitq mutex))
+      (loop while (or (null queue)
+                     (null (first queue)))
+          do (condition-wait waitq mutex))
       (prog1 (first (car queue))
        (setf (car queue)
              (rest (car queue)))))))
       (prog1 (first (car queue))
        (setf (car queue)
              (rest (car queue)))))))