From fa434319746e7ca9fb023cf8b1a4c1d0de67ed58 Mon Sep 17 00:00:00 2001 From: suzker Date: Fri, 27 May 2016 02:07:02 -0700 Subject: [PATCH] fixed mmap failure check with MAP_FAILED flag --- src/AbstractDiskWriter.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/AbstractDiskWriter.cc b/src/AbstractDiskWriter.cc index 9e3dac4b..a6191490 100644 --- a/src/AbstractDiskWriter.cc +++ b/src/AbstractDiskWriter.cc @@ -398,10 +398,14 @@ void AbstractDiskWriter::ensureMmapWrite(size_t len, int64_t offset) errNum = GetLastError(); } #else // !__MINGW32__ - mapaddr_ = reinterpret_cast(mmap( - nullptr, filesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd_, 0)); - if (!mapaddr_) { + void * pa = mmap(nullptr, filesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd_, 0); + + if (pa == MAP_FAILED) { errNum = errno; + mapaddr_ = nullptr; + } + else { + mapaddr_ = reinterpret_cast(pa); } #endif // !__MINGW32__ if (mapaddr_) {