summaryrefslogtreecommitdiffstats
path: root/src/arena.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/arena.c')
-rw-r--r--src/arena.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/arena.c b/src/arena.c
index b78719e..19069bb 100644
--- a/src/arena.c
+++ b/src/arena.c
@@ -1952,6 +1952,19 @@ arena_new(tsdn_t *tsdn, unsigned ind, extent_hooks_t *extent_hooks) {
arena->base = base;
+ /* We don't support reetrancy for arena 0 bootstrapping. */
+ if (ind != 0 && hooks_arena_new_hook) {
+ /*
+ * If we're here, then arena 0 already exists, so bootstrapping
+ * is done enough that we should have tsd.
+ */
+ int *reentrancy_level = tsd_reentrancy_levelp_get(tsdn_tsd(
+ tsdn));
+ ++*reentrancy_level;
+ hooks_arena_new_hook();
+ --*reentrancy_level;
+ }
+
return arena;
label_error:
if (ind != 0) {