-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Closed
Description
On Windows, all information of the FileSystemEntry is retrieved as part of the enumeration syscall.
On Unix, some of the properties are retrieved by making additional stat calls.
This means the Unix implementation needs to handle the case where the item may be deleted after it was reported by the readdir syscall, and before the stat syscall was made to get the additional properties.
For Windows compatibility, the Unix implementation does not throw for errors on the stat call.
These are some issues with the implementation:
continueOnErrorshould be used on all calls that retrieve infoFileStatusto avoid the exception getting thrown.- When the item no longer exists,
Attributesshould return a value based on the information of thedirent_t. TheFileAttributesAreExpectedandDirectoryAttributesAreExpectedthat check for this have a bug which causes them to report a false positive due to performing astatcall when checking to removeFileAttributes.Hidden. - The
FileStatusgets reused across the enumeration.GetLengthis missing a check to ensure the status is initialized that can cause information from the previous entry to leak into the next when the latter can not be initialized.
carlossanlop