diff options
author | Jason Evans <jasone@canonware.com> | 2015-01-15 00:27:31 (GMT) |
---|---|---|
committer | Jason Evans <jasone@canonware.com> | 2015-01-15 00:27:31 (GMT) |
commit | 24057f3da8cd1b23955068a368165eba2eefb5c4 (patch) | |
tree | d9aaf48d0e592b73f90731477fad676cae21449c /src/chunk.c | |
parent | 51f86346c000aa2a44abaab08caeedcb151e6556 (diff) | |
download | jemalloc-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.c | 4 |
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. |