about summary refs log tree commit diff
path: root/sysdeps/mach/hurd/readdir64_r.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/mach/hurd/readdir64_r.c')
-rw-r--r--sysdeps/mach/hurd/readdir64_r.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sysdeps/mach/hurd/readdir64_r.c b/sysdeps/mach/hurd/readdir64_r.c
index 7e438aafe8..4f4252c256 100644
--- a/sysdeps/mach/hurd/readdir64_r.c
+++ b/sysdeps/mach/hurd/readdir64_r.c
@@ -45,11 +45,12 @@ __readdir64_r (DIR *dirp, struct dirent64 *entry, struct dirent64 **result)
 	  /* We've emptied out our buffer.  Refill it.  */
 
 	  char *data = dirp->__data;
+	  mach_msg_type_number_t data_size = dirp->__size;
 	  int nentries;
 
 	  if (err = HURD_FD_PORT_USE (dirp->__fd,
 				      __dir_readdir (port,
-						     &data, &dirp->__size,
+						     &data, &data_size,
 						     dirp->__entry_ptr,
 						     -1, 0, &nentries)))
 	    {
@@ -58,6 +59,7 @@ __readdir64_r (DIR *dirp, struct dirent64 *entry, struct dirent64 **result)
 	      break;
 	    }
 
+	  dirp->__size = data_size;
 	  /* DATA now corresponds to entry index DIRP->__entry_ptr.  */
 	  dirp->__entry_data = dirp->__entry_ptr;