openmp: omp_alloc(0, ...) should return NULL.

2020-05-30  Jakub Jelinek  <jakub@redhat.com>

	* allocator.c (omp_alloc): For size == 0, return NULL early.

	* testsuite/libgomp.c-c++-common/alloc-4.c: New test.
This commit is contained in:
Jakub Jelinek 2020-05-30 14:02:56 +02:00
parent 850533ab16
commit 05e4db63d0
2 changed files with 28 additions and 0 deletions

View file

@ -201,6 +201,9 @@ omp_alloc (size_t size, omp_allocator_handle_t allocator)
size_t alignment, new_size;
void *ptr, *ret;
if (__builtin_expect (size == 0, 0))
return NULL;
retry:
if (allocator == omp_null_allocator)
{

View file

@ -0,0 +1,25 @@
#include <omp.h>
#include <stdlib.h>
const omp_alloctrait_t traits[]
= { { omp_atk_pool_size, 1 },
{ omp_atk_fallback, omp_atv_abort_fb } };
int
main ()
{
omp_allocator_handle_t a;
if (omp_alloc (0, omp_null_allocator) != NULL)
abort ();
a = omp_init_allocator (omp_default_mem_space, 2, traits);
if (a != omp_null_allocator)
{
if (omp_alloc (0, a) != NULL
|| omp_alloc (0, a) != NULL
|| omp_alloc (0, a) != NULL)
abort ();
omp_destroy_allocator (a);
}
return 0;
}