未验证 提交 08d84c3d 编写于 作者: O openharmony_ci 提交者: Gitee

!835 Add hook_calloc for hook

Merge pull request !835 from dhy308/add_hook_calloc
...@@ -20,9 +20,13 @@ extern void* je_realloc(void* p, size_t newsize); ...@@ -20,9 +20,13 @@ extern void* je_realloc(void* p, size_t newsize);
extern void je_free(void* p); extern void je_free(void* p);
#define MuslFunc(func) je_ ## func #define MuslFunc(func) je_ ## func
#else #else
extern void* __libc_malloc(size_t size); extern void *__libc_malloc(size_t size);
extern void __libc_free(void* p); 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 #endif
void *__libc_mmap(void*, size_t, int, int, int, off_t); void *__libc_mmap(void*, size_t, int, int, int, off_t);
......
...@@ -37,17 +37,25 @@ void *__libc_calloc(size_t m, size_t n) ...@@ -37,17 +37,25 @@ void *__libc_calloc(size_t m, size_t n)
return 0; return 0;
} }
n *= m; n *= m;
#ifdef HOOK_ENABLE
#ifdef USE_JEMALLOC
void *p = __libc_malloc(n); 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); void *p = malloc(n);
#endif
#else
void *p = __libc_malloc(n);
#endif
if (!p || (!__malloc_replaced && __malloc_allzerop(p))) if (!p || (!__malloc_replaced && __malloc_allzerop(p)))
return p; return p;
n = mal0_clear(p, n); n = mal0_clear(p, n);
return memset(p, 0, 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.
先完成此消息的编辑!
想要评论请 注册