]> git.proxmox.com Git - wasi-libc.git/blobdiff - libc-bottom-half/cloudlibc/src/libc/dirent/readdir.c
Fix logic errors in the zero-inode path. (#352)
[wasi-libc.git] / libc-bottom-half / cloudlibc / src / libc / dirent / readdir.c
index 951587417947e610601d215e77ba49d52b84d066..bfd19213c6abae67dad9211f5d040f38063b72bb 100644 (file)
@@ -89,11 +89,12 @@ struct dirent *readdir(DIR *dirp) {
     // inode number.
     off_t d_ino = entry.d_ino;
     unsigned char d_type = entry.d_type;
-    if (d_ino == 0) {
+    if (d_ino == 0 && strcmp(dirent->d_name, "..") != 0) {
       struct stat statbuf;
       if (fstatat(dirp->fd, dirent->d_name, &statbuf, AT_SYMLINK_NOFOLLOW) != 0) {
        if (errno == ENOENT) {
          // The file disappeared before we could read it, so skip it.
+         dirp->buffer_processed += entry_size;
          continue;
        }
         return NULL;