From c113872b1b5d8c3a7e5c47fd4321e00d090f96e6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Mon, 15 Sep 1997 14:43:23 +0200
Subject: [PATCH] Now releases the interpreter lock before signaling the mutex
 condition.

Rev: src/threads.c:1.39
---
 src/threads.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/threads.c b/src/threads.c
index e365a5d294..3f28b74269 100644
--- a/src/threads.c
+++ b/src/threads.c
@@ -1,5 +1,5 @@
 #include "global.h"
-RCSID("$Id: threads.c,v 1.38 1997/09/08 21:32:37 hubbe Exp $");
+RCSID("$Id: threads.c,v 1.39 1997/09/15 12:43:23 grubba Exp $");
 
 int num_threads = 1;
 int threads_disabled = 0;
@@ -293,6 +293,7 @@ void exit_mutex_key_obj(struct object *o)
   if(THIS_KEY->mut)
   {
     struct mutex_storage *mut = THIS_KEY->mut;
+
 #ifdef DEBUG
     if(mut->key != o)
       fatal("Mutex unlock from wrong key %p != %p!\n",THIS_KEY->mut->key,o);
@@ -302,9 +303,11 @@ void exit_mutex_key_obj(struct object *o)
       free_object(THIS_KEY->owner);
       THIS_KEY->owner=0;
     }
-    co_signal(& mut->condition);
     THIS_KEY->mut=0;
     THIS_KEY->initialized=0;
+    THREADS_ALLOW();
+    co_signal(& mut->condition);
+    THREADS_DISALLOW();
   }
 }
 
-- 
GitLab