提交 1e9a8677 编写于 作者: D dhy308

Add hook_calloc for hook

    Issue: I6IJ6H
    Test: Build & Boot Devices
Signed-off-by: Ndhy308 <tony.gan@huawei.com>
上级 a31ed2a6
......@@ -20,9 +20,13 @@ extern void* je_realloc(void* p, size_t newsize);
extern void je_free(void* p);
#define MuslFunc(func) je_ ## func
#else
extern void* __libc_malloc(size_t size);
extern void *__libc_malloc(size_t size);
extern void __libc_free(void* p);
#define MuslFunc(func) __libc_ ## func
extern void *hook_calloc(size_t, size_t);
#define hook_malloc __libc_malloc
#define hook_free __libc_free
#define hook_realloc __libc_realloc
#define MuslFunc(func) hook_ ## func
#endif
void *__libc_mmap(void*, size_t, int, int, int, off_t);
......
......@@ -37,17 +37,25 @@ void *__libc_calloc(size_t m, size_t n)
return 0;
}
n *= m;
#ifdef HOOK_ENABLE
#ifdef USE_JEMALLOC
void *p = __libc_malloc(n);
#else
if (!p || (!__malloc_replaced && __malloc_allzerop(p)))
return p;
n = mal0_clear(p, n);
return memset(p, 0, n);
}
#ifdef HOOK_ENABLE
void *hook_calloc(size_t m, size_t n)
{
if (n && m > (size_t)-1/n) {
errno = ENOMEM;
return 0;
}
n *= m;
void *p = malloc(n);
#endif
#else
void *p = __libc_malloc(n);
#endif
if (!p || (!__malloc_replaced && __malloc_allzerop(p)))
return p;
n = mal0_clear(p, n);
return memset(p, 0, n);
}
#endif
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册