From 667362a4850e52ec24e547f503d021b29a6f224e Mon Sep 17 00:00:00 2001 From: Juan Jose Garcia Ripoll Date: Sat, 31 Mar 2012 11:22:23 +0200 Subject: [PATCH] mp_get_lock_wait() checks the type of the lock before dereferencing a field. --- src/c/threads/mutex.d | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/c/threads/mutex.d b/src/c/threads/mutex.d index 987c69d6c..0a1edeeb6 100644 --- a/src/c/threads/mutex.d +++ b/src/c/threads/mutex.d @@ -156,8 +156,11 @@ mp_get_lock_nowait(cl_object lock) cl_object mp_get_lock_wait(cl_object lock) { - if (lock->lock.queue_list != Cnil || - mp_get_lock_nowait(lock) == Cnil) { + cl_env_ptr env = ecl_process_env(); + unlikely_if (type_of(lock) != t_lock) { + FEerror_not_a_lock(lock); + } + if (lock->lock.queue_list != Cnil || get_lock_inner(env, lock) == Cnil) { ecl_wait_on(get_lock_inner, lock); } @(return Ct)