diff options
author | Eric Fiselier <eric@efcs.ca> | 2018-07-23 22:58:46 +0000 |
---|---|---|
committer | Eric Fiselier <eric@efcs.ca> | 2018-07-23 22:58:46 +0000 |
commit | 54f10f8e68012217c5a72bc68d98104303a3c0e0 (patch) | |
tree | c7d98b8f654c58ef8d1e41a48ffaad327ebf79ad /libcxx | |
parent | f66e4f7dbd66ff3a9fdd33c4f6b21166ed8c5095 (diff) | |
download | bcm5719-llvm-54f10f8e68012217c5a72bc68d98104303a3c0e0.tar.gz bcm5719-llvm-54f10f8e68012217c5a72bc68d98104303a3c0e0.zip |
Handle DT_UNKNOWN correctly during directory iteration.
Unlike stat and lstat, where unknown really means we know it's something weird,
during directory iteration DT_UNKNOWN simply means that the underlying FS doesn't
support the dirent::dt_type field.
This patch fixes libc++ to correctly set the cache to empty when DT_UNKNOWN is reported.
llvm-svn: 337768
Diffstat (limited to 'libcxx')
-rw-r--r-- | libcxx/src/experimental/filesystem/directory_iterator.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libcxx/src/experimental/filesystem/directory_iterator.cpp b/libcxx/src/experimental/filesystem/directory_iterator.cpp index c95ebc8ac34..7a1ab257354 100644 --- a/libcxx/src/experimental/filesystem/directory_iterator.cpp +++ b/libcxx/src/experimental/filesystem/directory_iterator.cpp @@ -42,8 +42,11 @@ static file_type get_file_type(DirEntT *ent, int) { return file_type::regular; case DT_SOCK: return file_type::socket; + // Unlike in lstat, hitting "unknown" here simply means that the underlying + // filesystem doesn't support d_type. Report is as 'none' so we correctly + // set the cache to empty. case DT_UNKNOWN: - return file_type::unknown; + break; } return file_type::none; } |