Avoid checking errno on success call (#8119)

Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/8119

Reviewed By: sushilpa

Differential Revision: D27365407

Pulled By: jay-zhuang

fbshipit-source-id: 327c09bf76834ce0be4287680640adc8b88bcec2
This commit is contained in:
Jay Zhuang 2021-03-26 18:45:19 -07:00 committed by Facebook GitHub Bot
parent 63748c2204
commit ce6de862c1

12
env/fs_posix.cc vendored
View File

@ -620,9 +620,10 @@ class PosixFileSystem : public FileSystem {
} }
} }
const auto pre_read_errno = errno; // errno may be modified by readdir // reset errno before calling readdir()
errno = 0;
struct dirent* entry; struct dirent* entry;
while ((entry = readdir(d)) != nullptr && errno == pre_read_errno) { while ((entry = readdir(d)) != nullptr) {
// filter out '.' and '..' directory entries // filter out '.' and '..' directory entries
// which appear only on some platforms // which appear only on some platforms
const bool ignore = const bool ignore =
@ -631,19 +632,20 @@ class PosixFileSystem : public FileSystem {
if (!ignore) { if (!ignore) {
result->push_back(entry->d_name); result->push_back(entry->d_name);
} }
errno = 0; // reset errno if readdir() success
} }
// always attempt to close the dir // always attempt to close the dir
const auto pre_close_errno = errno; // errno may be modified by closedir const auto pre_close_errno = errno; // errno may be modified by closedir
const int close_result = closedir(d); const int close_result = closedir(d);
if (pre_close_errno != pre_read_errno) { if (pre_close_errno != 0) {
// error occured during readdir // error occurred during readdir
return IOError("While readdir", dir, pre_close_errno); return IOError("While readdir", dir, pre_close_errno);
} }
if (close_result != 0) { if (close_result != 0) {
// error occured during closedir // error occurred during closedir
return IOError("While closedir", dir, errno); return IOError("While closedir", dir, errno);
} }