[Issue 6138] Using dirEntries and chdir() can have unwanted results
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Mon Jan 29 13:14:54 UTC 2018
    
    
  
https://issues.dlang.org/show_bug.cgi?id=6138
Francesco Galla' <francesco.galla3 at gmail.com> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |francesco.galla3 at gmail.com
--- Comment #5 from Francesco Galla' <francesco.galla3 at gmail.com> ---
(In reply to RazvanN from comment #3)
> After analyzing the code I see that dirEntries does not call absolutePath on
> the path, which in my opinion is a bug. Even though I cannot reproduce the
> bug, I think a call to absolutePath should definitely be added
I reproduced the bug with the following code:
   foreach (string entry; dirEntries((dir), SpanMode.shallow))
   {
       if (entry.isDir)
       {
            foreach (string subentry; dirEntries(entry, SpanMode.shallow))
            {
                 if (subentry.isDir)
                 {
                     chdir(absolutePath(subentry));
                     writeln (absolutePath(subentry));
                 }
            }
       }
   }
My directory tree is:
.
├── 1
│   └── 2
├── 3
│   ├── 4
│   └── 5
│       └── 6
* The result I obtained was the following:
std.file.FileException@/opt/dmd-2.075/import/std/file.d(1631): ./3: No such
file or directory
* By calling:
foreach (string entry; dirEntries(absolutePath(dir), SpanMode.shallow))
The code was executed correctly. This seems to confirm the need for
dirEntries() to call absolutePath(). Am I mistaken?
--
    
    
More information about the Digitalmars-d-bugs
mailing list