diff --git a/AK/MappedFile.cpp b/AK/MappedFile.cpp index 83baecfaa4a..73265c5a7f4 100644 --- a/AK/MappedFile.cpp +++ b/AK/MappedFile.cpp @@ -13,21 +13,26 @@ namespace AK { MappedFile::MappedFile(const StringView& file_name) { m_size = PAGE_SIZE; - m_fd = open_with_path_length(file_name.characters_without_null_termination(), file_name.length(), O_RDONLY | O_CLOEXEC, 0); + int fd = open_with_path_length(file_name.characters_without_null_termination(), file_name.length(), O_RDONLY | O_CLOEXEC, 0); - if (m_fd != -1) { - struct stat st; - fstat(m_fd, &st); - m_size = st.st_size; - m_map = mmap(nullptr, m_size, PROT_READ, MAP_SHARED, m_fd, 0); - - if (m_map == MAP_FAILED) - perror(""); + if (fd == -1) { + perror("open"); + return; } + struct stat st; + fstat(fd, &st); + m_size = st.st_size; + m_map = mmap(nullptr, m_size, PROT_READ, MAP_SHARED, fd, 0); + + if (m_map == MAP_FAILED) + perror("mmap"); + #ifdef DEBUG_MAPPED_FILE - dbgprintf("MappedFile{%s} := { m_fd=%d, m_size=%u, m_map=%p }\n", file_name.characters(), m_fd, m_size, m_map); + dbgprintf("MappedFile{%s} := { fd=%d, m_size=%u, m_map=%p }\n", file_name.characters(), fd, m_size, m_map); #endif + + close(fd); } MappedFile::~MappedFile() @@ -39,23 +44,17 @@ void MappedFile::unmap() { if (!is_valid()) return; - ASSERT(m_fd != -1); int rc = munmap(m_map, m_size); ASSERT(rc == 0); - rc = close(m_fd); - ASSERT(rc == 0); m_size = 0; - m_fd = -1; m_map = (void*)-1; } MappedFile::MappedFile(MappedFile&& other) : m_size(other.m_size) - , m_fd(other.m_fd) , m_map(other.m_map) { other.m_size = 0; - other.m_fd = -1; other.m_map = (void*)-1; } @@ -65,7 +64,6 @@ MappedFile& MappedFile::operator=(MappedFile&& other) return *this; unmap(); swap(m_size, other.m_size); - swap(m_fd, other.m_fd); swap(m_map, other.m_map); return *this; } diff --git a/AK/MappedFile.h b/AK/MappedFile.h index 35686bb8175..913716e365a 100644 --- a/AK/MappedFile.h +++ b/AK/MappedFile.h @@ -24,7 +24,6 @@ public: private: size_t m_size { 0 }; - int m_fd { -1 }; void* m_map { (void*)-1 }; };