diff --git a/lib/modules/Thread.pmod b/lib/modules/Thread.pmod index 0bdd21a9a2d6a4ce72dbb7f19c4b78dea07c250f..a337ad18ce802a35bdd4af4f3b9bc17476a69eca 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(); } };