@ -321,7 +321,8 @@ bool RemoveDirContentsRecursively(const fs::path& path) {
std : : error_code ec ;
for ( const auto & entry : fs : : recursive_directory_iterator ( path , ec ) ) {
// TODO (Morph): Replace this with recursive_directory_iterator once it's fixed in MSVC.
for ( const auto & entry : fs : : directory_iterator ( path , ec ) ) {
if ( ec ) {
LOG_ERROR ( Common_Filesystem ,
" Failed to completely enumerate the directory at path={}, ec_message={} " ,
@ -337,6 +338,12 @@ bool RemoveDirContentsRecursively(const fs::path& path) {
PathToUTF8String ( entry . path ( ) ) , ec . message ( ) ) ;
break ;
}
// TODO (Morph): Remove this when MSVC fixes recursive_directory_iterator.
// recursive_directory_iterator throws an exception despite passing in a std::error_code.
if ( entry . status ( ) . type ( ) = = fs : : file_type : : directory ) {
return RemoveDirContentsRecursively ( entry . path ( ) ) ;
}
}
if ( ec ) {
@ -475,7 +482,8 @@ void IterateDirEntriesRecursively(const std::filesystem::path& path,
std : : error_code ec ;
for ( const auto & entry : fs : : recursive_directory_iterator ( path , ec ) ) {
// TODO (Morph): Replace this with recursive_directory_iterator once it's fixed in MSVC.
for ( const auto & entry : fs : : directory_iterator ( path , ec ) ) {
if ( ec ) {
break ;
}
@ -495,6 +503,12 @@ void IterateDirEntriesRecursively(const std::filesystem::path& path,
break ;
}
}
// TODO (Morph): Remove this when MSVC fixes recursive_directory_iterator.
// recursive_directory_iterator throws an exception despite passing in a std::error_code.
if ( entry . status ( ) . type ( ) = = fs : : file_type : : directory ) {
IterateDirEntriesRecursively ( entry . path ( ) , callback , filter ) ;
}
}
if ( callback_error | | ec ) {