diff --git a/module/srfi/srfi-18.scm b/module/srfi/srfi-18.scm index 79aedb8d1..7da6254d4 100644 --- a/module/srfi/srfi-18.scm +++ b/module/srfi/srfi-18.scm @@ -307,17 +307,19 @@ object (absolute point in time), or #f." (timeout %unlock-sentinel)) (let ((timeout (timeout->absolute-time timeout))) (when (mutex-owner mutex) - (set-mutex-owner! mutex #f) (cond ((eq? cond-var %unlock-sentinel) + (set-mutex-owner! mutex #f) (threads:unlock-mutex (mutex-prim mutex))) ((eq? timeout %unlock-sentinel) (threads:wait-condition-variable (condition-variable-prim cond-var) (mutex-prim mutex)) + (set-mutex-owner! mutex #f) (threads:unlock-mutex (mutex-prim mutex))) ((threads:wait-condition-variable (condition-variable-prim cond-var) (mutex-prim mutex) timeout) + (set-mutex-owner! mutex #f) (threads:unlock-mutex (mutex-prim mutex))) (else #f)))))