Don't call fdopendir on unique_fd::get.
Transfer ownership by releasing first, instead of calling fdopendir on
unique_fd::get() and then releasing afterwards, to allow for strict
fd-ownership checks.
Test: treehugger
Change-Id: Idf8f107f8b6e4fc6bea03b9a9713d30b5c874f5a
diff --git a/services/vr/performanced/directory_reader.h b/services/vr/performanced/directory_reader.h
index b9d27c3..f8359c4 100644
--- a/services/vr/performanced/directory_reader.h
+++ b/services/vr/performanced/directory_reader.h
@@ -16,10 +16,11 @@
class DirectoryReader {
public:
explicit DirectoryReader(base::unique_fd directory_fd) {
- directory_ = fdopendir(directory_fd.get());
+ int fd = directory_fd.release();
+ directory_ = fdopendir(fd);
error_ = errno;
- if (directory_ != nullptr)
- (void) directory_fd.release(); // ignore return result?
+ if (directory_ == nullptr)
+ close(fd);
}
~DirectoryReader() {