提交 3c32dd3b authored 作者: Travis Cross's avatar Travis Cross

Return NULL from `sub_alloc` for zero size

When zero was passed for the size to `sub_alloc`, we were passing this
size on to `malloc` or `calloc`, which is unusual enough that static
analyzers warn about this (POSIX says that either NULL or a pointer
will be returned).

We'll instead just return NULL right away.
上级 959e672a
......@@ -432,6 +432,8 @@ void *sub_alloc(su_home_t *home,
if (size >= ((size_t)1) << SIZEBITS)
return (void)(errno = ENOMEM), NULL;
if (!size) return NULL;
if (sub == NULL || 3 * sub->sub_used > 2 * sub->sub_n) {
/* Resize the hash table */
size_t i, n, n2;
......@@ -474,7 +476,7 @@ void *sub_alloc(su_home_t *home,
sub = b2;
}
if (size && sub && zero < do_clone &&
if (sub && zero < do_clone &&
sub->sub_preload && size <= sub->sub_prsize) {
/* Use preloaded memory */
size_t prused = sub->sub_prused + size + MEMCHECK_EXTRA;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论