digitalmars.D.bugs - [Issue 8291] New: dirEntry cannot handle root directories + unhandled exception causes crash
- d-bugmail puremagic.com (33/33) Jun 24 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8291
- d-bugmail puremagic.com (20/35) Dec 21 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8291
http://d.puremagic.com/issues/show_bug.cgi?id=8291 Summary: dirEntry cannot handle root directories + unhandled exception causes crash Product: D Version: D2 Platform: All OS/Version: Windows Status: NEW Severity: major Priority: P2 Component: Phobos AssignedTo: nobody puremagic.com ReportedBy: mp81ss rambler.ru --- Comment #0 from Michele Pes <mp81ss rambler.ru> 2012-06-24 10:03:15 PDT --- 1) Wrong root handling api/params. To stat a root directory, the "GetFileAttributes" API must be used instead of "FindFirstFile". To stat all files in a root dir, "C:\*" must be passed to FindFirstFile. In all other cases, a path with [back]slash removed can be passed to "FindFirstFile". I know this in crazy, if you don't believe me, read CAREFULLY the FindFirstFile docs. P.S.: This should make you see that the dirEntries method may have some problems... 2) Crash The result of FindFirstFile is "enforced" in _init private method and NOT CAUGHT in the caller public method dirEntry, and this crashes the client app. It would be better to throw a FileException in _init and catch+rethrow it in dirEntry. Found on 2.059 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 24 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8291 Vladimir Panteleev <thecybershadow gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |thecybershadow gmail.com --- Comment #1 from Vladimir Panteleev <thecybershadow gmail.com> 2012-12-21 21:31:50 PST --- (In reply to comment #0)1) Wrong root handling api/params. To stat a root directory, the "GetFileAttributes" API must be used instead of "FindFirstFile". To stat all files in a root dir, "C:\*" must be passed to FindFirstFile. In all other cases, a path with [back]slash removed can be passed to "FindFirstFile". I know this in crazy, if you don't believe me, read CAREFULLY the FindFirstFile docs. P.S.: This should make you see that the dirEntries method may have some problems...The following program works as expected, and prints the files/directories in the root of my C: drive: import std.stdio; import std.file; void main() { writeln(dirEntries(`C:\`, SpanMode.shallow)); } Can you clarify the problem?2) Crash The result of FindFirstFile is "enforced" in _init private method and NOT CAUGHT in the caller public method dirEntry, and this crashes the client app. It would be better to throw a FileException in _init and catch+rethrow it in dirEntry.So what is the exact problem? Isn't a FileException thrown in either case? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Dec 21 2012