aboutsummaryrefslogtreecommitdiff
path: root/posix/tst-dir.c
diff options
context:
space:
mode:
Diffstat (limited to 'posix/tst-dir.c')
-rw-r--r--posix/tst-dir.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/posix/tst-dir.c b/posix/tst-dir.c
index 5946ea9..400849a 100644
--- a/posix/tst-dir.c
+++ b/posix/tst-dir.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2002 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2000.
@@ -21,6 +21,7 @@
#include <errno.h>
#include <fcntl.h>
#include <mcheck.h>
+#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -48,7 +49,12 @@ main (int argc, char *argv[])
DIR *dir2;
int result = 0;
struct dirent64 *d;
- struct dirent64 direntbuf;
+ union
+ {
+ struct dirent64 d;
+ char room [offsetof (struct dirent64, d_name[0]) + NAME_MAX + 1];
+ }
+ direntbuf;
char *objdir_copy1;
char *objdir_copy2;
char *buf;
@@ -316,7 +322,7 @@ main (int argc, char *argv[])
/* Try to find the new directory. */
rewinddir (dir1);
- while (readdir64_r (dir1, &direntbuf, &d) == 0 && d != NULL)
+ while (readdir64_r (dir1, &direntbuf.d, &d) == 0 && d != NULL)
{
#ifdef _DIRENT_HAVE_D_TYPE
if (d->d_type != DT_UNKNOWN && d->d_type != DT_DIR)
@@ -436,7 +442,7 @@ main (int argc, char *argv[])
/* We now should have a directory and a file in the new directory. */
rewinddir (dir2);
- while (readdir64_r (dir2, &direntbuf, &d) == 0 && d != NULL)
+ while (readdir64_r (dir2, &direntbuf.d, &d) == 0 && d != NULL)
{
if (strcmp (d->d_name, ".") == 0
|| strcmp (d->d_name, "..") == 0