fd: mmap: Don't use null span
We aren't allowed to use a null span with positive size, change the
internal interfaces to avoid it.
Change-Id: I6687d45a535c20b72f42a99e1ecdbd89f3796f99
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/src/fd/impl.cpp b/src/fd/impl.cpp
index 3147e64..5f9fe7f 100644
--- a/src/fd/impl.cpp
+++ b/src/fd/impl.cpp
@@ -188,16 +188,16 @@
return FileFlags(CHECK_ERRNO(::fcntl(get(), F_GETFL), "fcntl getfl"));
}
-std::span<std::byte> FdImpl::mmap(std::span<std::byte> window, ProtFlags prot,
- MMapFlags flags, off_t offset)
+std::span<std::byte> FdImpl::mmap(std::byte* window, std::size_t size,
+ ProtFlags prot, MMapFlags flags, off_t offset)
{
- auto ret = ::mmap(window.data(), window.size(), static_cast<int>(prot),
+ auto ret = ::mmap(window, size, static_cast<int>(prot),
static_cast<int>(flags), get(), offset);
if (ret == MAP_FAILED)
{
util::doError(errno, "mmap");
}
- return {reinterpret_cast<std::byte*>(ret), window.size()};
+ return {reinterpret_cast<std::byte*>(ret), size};
}
void FdImpl::munmap(std::span<std::byte> window)
diff --git a/src/fd/mmap.cpp b/src/fd/mmap.cpp
index 7026aa6..4718121 100644
--- a/src/fd/mmap.cpp
+++ b/src/fd/mmap.cpp
@@ -6,8 +6,13 @@
namespace fd
{
+MMap::MMap(Fd& fd, size_t window_size, ProtFlags prot, MMapFlags flags,
+ off_t offset) :
+ mapping(fd.mmap(nullptr, window_size, prot, flags, offset), fd)
+{}
MMap::MMap(Fd& fd, std::span<std::byte> window, ProtFlags prot, MMapFlags flags,
- off_t offset) : mapping(fd.mmap(window, prot, flags, offset), fd)
+ off_t offset) :
+ mapping(fd.mmap(window.data(), window.size(), prot, flags, offset), fd)
{}
std::span<std::byte> MMap::get() const