diff options
author | Jason Evans <jasone@canonware.com> | 2013-12-13 06:35:52 (GMT) |
---|---|---|
committer | Jason Evans <jasone@canonware.com> | 2013-12-13 06:35:52 (GMT) |
commit | d82a5e6a34f20698ab9368bb2b4953b81d175552 (patch) | |
tree | 23cbe8892adf46196cc6b2cf977704405c7798b7 /src/arena.c | |
parent | 0ac396a06a10f8a8c1d41c8771367625e7d49d07 (diff) | |
download | jemalloc-d82a5e6a34f20698ab9368bb2b4953b81d175552.zip jemalloc-d82a5e6a34f20698ab9368bb2b4953b81d175552.tar.gz jemalloc-d82a5e6a34f20698ab9368bb2b4953b81d175552.tar.bz2 |
Implement the *allocx() API.
Implement the *allocx() API, which is a successor to the *allocm() API.
The *allocx() functions are slightly simpler to use because they have
fewer parameters, they directly return the results of primary interest,
and mallocx()/rallocx() avoid the strict aliasing pitfall that
allocm()/rallocx() share with posix_memalign(). The following code
violates strict aliasing rules:
foo_t *foo;
allocm((void **)&foo, NULL, 42, 0);
whereas the following is safe:
foo_t *foo;
void *p;
allocm(&p, NULL, 42, 0);
foo = (foo_t *)p;
mallocx() does not have this problem:
foo_t *foo = (foo_t *)mallocx(42, 0);
Diffstat (limited to 'src/arena.c')
-rw-r--r-- | src/arena.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/arena.c b/src/arena.c index 145de86..4a46013 100644 --- a/src/arena.c +++ b/src/arena.c @@ -2031,7 +2031,7 @@ arena_ralloc(arena_t *arena, void *ptr, size_t oldsize, size_t size, size_t usize = sa2u(size + extra, alignment); if (usize == 0) return (NULL); - ret = ipallocx(usize, alignment, zero, try_tcache_alloc, arena); + ret = ipalloct(usize, alignment, zero, try_tcache_alloc, arena); } else ret = arena_malloc(arena, size + extra, zero, try_tcache_alloc); @@ -2043,7 +2043,7 @@ arena_ralloc(arena_t *arena, void *ptr, size_t oldsize, size_t size, size_t usize = sa2u(size, alignment); if (usize == 0) return (NULL); - ret = ipallocx(usize, alignment, zero, try_tcache_alloc, + ret = ipalloct(usize, alignment, zero, try_tcache_alloc, arena); } else ret = arena_malloc(arena, size, zero, try_tcache_alloc); @@ -2061,7 +2061,7 @@ arena_ralloc(arena_t *arena, void *ptr, size_t oldsize, size_t size, copysize = (size < oldsize) ? size : oldsize; VALGRIND_MAKE_MEM_UNDEFINED(ret, copysize); memcpy(ret, ptr, copysize); - iqallocx(ptr, try_tcache_dalloc); + iqalloct(ptr, try_tcache_dalloc); return (ret); } |