From 9367b24fde0c3f5efa5934e69571f5834ed43548 Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Thu, 29 May 2008 11:10:23 +0000 Subject: [PATCH] hs_add_root: use use rts_lock()/rts_unlock() for a bit of extra safety --- rts/RtsStartup.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rts/RtsStartup.c b/rts/RtsStartup.c index 0ce17fe..774de72 100644 --- a/rts/RtsStartup.c +++ b/rts/RtsStartup.c @@ -330,7 +330,9 @@ hs_add_root(void (*init_root)(void)) { bdescr *bd; nat init_sp; - Capability *cap = &MainCapability; + Capability *cap; + + cap = rts_lock(); if (hs_init_count <= 0) { barf("hs_add_root() must be called after hs_init()"); @@ -357,6 +359,8 @@ hs_add_root(void (*init_root)(void)) // ToDo: make this work in the presence of multiple hs_add_root()s. initProfiling2(); + rts_unlock(cap); + // ditto. #if defined(THREADED_RTS) ioManagerStart(); -- 1.7.10.4