summaryrefslogtreecommitdiffstats
path: root/src/chunk.c
diff options
context:
space:
mode:
authorJason Evans <jasone@canonware.com>2015-01-15 00:27:31 (GMT)
committerJason Evans <jasone@canonware.com>2015-01-15 00:27:31 (GMT)
commit24057f3da8cd1b23955068a368165eba2eefb5c4 (patch)
treed9aaf48d0e592b73f90731477fad676cae21449c /src/chunk.c
parent51f86346c000aa2a44abaab08caeedcb151e6556 (diff)
downloadjemalloc-24057f3da8cd1b23955068a368165eba2eefb5c4.zip
jemalloc-24057f3da8cd1b23955068a368165eba2eefb5c4.tar.gz
jemalloc-24057f3da8cd1b23955068a368165eba2eefb5c4.tar.bz2
Fix an infinite recursion bug related to a0/tsd bootstrapping.
This resolves #184.
Diffstat (limited to 'src/chunk.c')
-rw-r--r--src/chunk.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/chunk.c b/src/chunk.c
index 7926452..b9a2441 100644
--- a/src/chunk.c
+++ b/src/chunk.c
@@ -254,7 +254,9 @@ chunk_alloc_default(void *new_addr, size_t size, size_t alignment, bool *zero,
{
arena_t *arena;
- arena = arena_get(tsd_fetch(), arena_ind, false, true);
+ /* Dodge tsd for a0 in order to avoid bootstrapping issues. */
+ arena = (arena_ind == 0) ? a0get() : arena_get(tsd_fetch(), arena_ind,
+ false, true);
/*
* The arena we're allocating on behalf of must have been initialized
* already.