From: Bruno Haible Date: Thu, 31 Oct 2024 19:54:15 +0000 (+0100) Subject: malloc-posix: Add tests. X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=7a80523ef2293bed38c108dc3a2d7391f3295e1d;p=gnulib.git malloc-posix: Add tests. * tests/test-malloc-posix.c: New file. * modules/malloc-posix-tests: New file. --- diff --git a/ChangeLog b/ChangeLog index b80e728c2a..9d20e29f96 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2024-10-31 Bruno Haible + + malloc-posix: Add tests. + * tests/test-malloc-posix.c: New file. + * modules/malloc-posix-tests: New file. + 2024-10-31 Bruno Haible realloc-posix: Set errno when failing (regression 2029-10-29). diff --git a/modules/malloc-posix-tests b/modules/malloc-posix-tests new file mode 100644 index 0000000000..17f9b6fb80 --- /dev/null +++ b/modules/malloc-posix-tests @@ -0,0 +1,12 @@ +Files: +tests/test-malloc-posix.c +tests/macros.h + +Depends-on: +stdint + +configure.ac: + +Makefile.am: +TESTS += test-malloc-posix +check_PROGRAMS += test-malloc-posix diff --git a/tests/test-malloc-posix.c b/tests/test-malloc-posix.c new file mode 100644 index 0000000000..7a89b0ab79 --- /dev/null +++ b/tests/test-malloc-posix.c @@ -0,0 +1,55 @@ +/* Test of malloc function. + Copyright (C) 2024 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include + +/* Specification. */ +#include + +#include +#include +#include + +#include "macros.h" + +int +main () +{ + /* Check that malloc sets errno when it fails. + Do this only in 64-bit processes, because there are many bi-arch systems + nowadays where a 32-bit process can actually allocate 2 GiB of RAM. */ + if (sizeof (size_t) >= 8) + { + void *volatile p; + + errno = 0; + p = malloc (SIZE_MAX / 10); + ASSERT (p == NULL); + ASSERT (errno == ENOMEM); + + errno = 0; + p = malloc (SIZE_MAX / 3); + ASSERT (p == NULL); + ASSERT (errno == ENOMEM); + + return test_exit_status; + } + else + { + fputs ("Skipping test: size_t is not 64-bits wide\n", stderr); + return 77; + } +}