Author: jhb
Date: Wed Sep  3 19:01:34 2014
New Revision: 271048
URL: http://svnweb.freebsd.org/changeset/base/271048

Log:
  Always seek back to the beginning of a regular directory, even if the
  previous seek location was 0.  Without this, readdir() would see
  dd_loc of zero and call getdirentries() which would start reading
  entries at the current seek location of the directory ignoring the
  first batch of entries.  Also, rewinddir() should always seek so that
  it reads the directory from the beginning to get updated entries.
  
  PR:           192935
  Reported by:  i...@mail.ua
  MFC after:    3 days

Modified:
  head/lib/libc/gen/rewinddir.c

Modified: head/lib/libc/gen/rewinddir.c
==============================================================================
--- head/lib/libc/gen/rewinddir.c       Wed Sep  3 18:51:33 2014        
(r271047)
+++ head/lib/libc/gen/rewinddir.c       Wed Sep  3 19:01:34 2014        
(r271048)
@@ -53,7 +53,7 @@ rewinddir(dirp)
                _pthread_mutex_lock(&dirp->dd_lock);
        if (dirp->dd_flags & __DTF_READALL)
                _filldir(dirp, false);
-       else if (dirp->dd_seek != 0) {
+       else {
                (void) lseek(dirp->dd_fd, 0, SEEK_SET);
                dirp->dd_seek = 0;
        }
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to