mirror of
git://sourceware.org/git/glibc.git
synced 2025-03-06 20:58:33 +01:00
dirent: Remove variable length array structure for tst-getdents64.c
Clang emits the following warnings: ../sysdeps/unix/sysv/linux/tst-getdents64.c:111:18: error: fields must have a constant size: 'variable length array in structure' extension will never be supported char buffer[buffer_size]; ^ Co-Authored-By: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Sam James <sam@gentoo.org>
This commit is contained in:
parent
494eb254c3
commit
799e686c88
1 changed files with 7 additions and 11 deletions
|
@ -103,6 +103,8 @@ do_test_by_size (size_t buffer_size)
|
|||
int fd = xopen (".", O_RDONLY | O_DIRECTORY, 0);
|
||||
TEST_VERIFY (fd >= 0);
|
||||
|
||||
char *data = xposix_memalign (_Alignof (struct dirent64), buffer_size);
|
||||
|
||||
/* Perform two passes, with a rewind operating between passes. */
|
||||
for (int pass = 0; pass < 2; ++pass)
|
||||
{
|
||||
|
@ -111,23 +113,15 @@ do_test_by_size (size_t buffer_size)
|
|||
|
||||
while (true)
|
||||
{
|
||||
/* Simple way to make sure that the memcpy below does not read
|
||||
non-existing data. */
|
||||
struct
|
||||
{
|
||||
char buffer[buffer_size];
|
||||
struct dirent64 pad;
|
||||
} data;
|
||||
|
||||
ssize_t ret = getdents64 (fd, &data.buffer, sizeof (data.buffer));
|
||||
ssize_t ret = getdents64 (fd, data, buffer_size);
|
||||
if (ret < 0)
|
||||
FAIL_EXIT1 ("getdents64: %m");
|
||||
if (ret == 0)
|
||||
break;
|
||||
++read_count;
|
||||
|
||||
char *current = data.buffer;
|
||||
char *end = data.buffer + ret;
|
||||
char *current = data;
|
||||
char *end = data + ret;
|
||||
while (current != end)
|
||||
{
|
||||
struct dirent64 entry;
|
||||
|
@ -170,6 +164,8 @@ do_test_by_size (size_t buffer_size)
|
|||
rewinddir (reference);
|
||||
}
|
||||
|
||||
free (data);
|
||||
|
||||
xclose (fd);
|
||||
closedir (reference);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue