(__getcwd): When we find a match in the scan for a name, avoid doing another
authormiles <miles>
Thu, 25 Apr 1996 21:37:46 +0000 (21:37 +0000)
committermiles <miles>
Thu, 25 Apr 1996 21:37:46 +0000 (21:37 +0000)
  readdir (which overwrites NENTRIES, and was resulting in a bogus ENOENT).

sysdeps/mach/hurd/getcwd.c

index abec22c..039f134 100644 (file)
@@ -119,6 +119,7 @@ __getcwd (char *buf, size_t size)
       unsigned int dirdatasize;
       int direntry, nentries;
 
+
       /* Look at the parent directory.  */
       newp = __file_name_lookup_under (parent, "..", O_READ, 0);
       if (newp == MACH_PORT_NULL)
@@ -187,6 +188,11 @@ __getcwd (char *buf, size_t size)
                    break;
                }
            }
+
+         if (offset < dirdatasize)
+           /* We got a match; avoid doing another dir_readdir, which will
+               hose NENTRIES.  */
+           break;
        }
 
       if (err)