add locking in mkWeakForeignEnv#
authorSimon Marlow <marlowsd@gmail.com>
Tue, 8 Dec 2009 10:12:29 +0000 (10:12 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Tue, 8 Dec 2009 10:12:29 +0000 (10:12 +0000)
rts/PrimOps.cmm

index b88ca7a..b4dfb6d 100644 (file)
@@ -377,8 +377,10 @@ stg_mkWeakForeignEnvzh
   StgWeak_finalizer(w)  = stg_NO_FINALIZER_closure;
   StgWeak_cfinalizer(w) = p;
 
+  ACQUIRE_LOCK(sm_mutex);
   StgWeak_link(w)   = W_[weak_ptr_list];
   W_[weak_ptr_list] = w;
+  RELEASE_LOCK(sm_mutex);
 
   IF_DEBUG(weak, foreign "C" debugBelch(stg_weak_msg,w) []);