Opened 11 years ago
Closed 11 years ago
#5653 closed Bugs (fixed)
recursive_directory_iterator(error_code) can still throw filesystem_error
Reported by: | Owned by: | Beman Dawes | |
---|---|---|---|
Milestone: | To Be Determined | Component: | filesystem |
Version: | Boost 1.46.1 | Severity: | Problem |
Keywords: | Cc: |
Description
internally recursive_directory_iterator uses other filesystem facilities (such as is_directory and is_symlink) without passing the system::error_code argument. If they fail, they will throw filesystem_error.
Example on Linux (see ticket #5652):
int main() {
try {
error_code ec; for (recursive_directory_iterator i(".", ec); i != recursive_directory_iterator(); ++i) ;
} catch (const std::exception& e) {
std::cout << ">> " << e.what() << std::endl;
}
}
$ ln -s mybadlink mybadlink $ ./test
boost::filesystem::status: Too many levels of symbolic links: "./mybadlink"
(In [76667]) Fix #5653, recursive_directory_iterator(error_code) can still throw filesystem_error. Fix a second bug, discovered while testing 5653; recursive_directory_iterator::increment with error_code argument was not reporting the end iterator.