From 8e40e83ff34ee1fa8434f274b9159f43dbdafef8 Mon Sep 17 00:00:00 2001
From: Per Hedbor <ph@opera.com>
Date: Mon, 1 Sep 1997 16:13:50 +0200
Subject: [PATCH] Fixed the unlocking/locking order. Sometimes a deadlock
 occured.

Rev: lib/modules/Thread.pmod:1.8
---
 lib/modules/Thread.pmod | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/lib/modules/Thread.pmod b/lib/modules/Thread.pmod
index 0bdd21a9a2..a337ad18ce 100644
--- a/lib/modules/Thread.pmod
+++ b/lib/modules/Thread.pmod
@@ -52,6 +52,7 @@ class Queue {
       object key=lock::lock();
       while(!size()) r_cond::wait(key);
       tmp=buffer[r_ptr++];
+      key=0;
       return tmp;
     }
   
@@ -67,6 +68,7 @@ class Queue {
       }
       buffer[w_ptr]=v;
       w_ptr++;
+      key=0; // Must free this one _before_ the signal...
       r_cond::signal();
     }
 };
-- 
GitLab