diff --git a/util/env_posix.cc b/util/env_posix.cc index 7aa0fbcfa..ccaed9b04 100644 --- a/util/env_posix.cc +++ b/util/env_posix.cc @@ -313,12 +313,13 @@ class PosixMmapReadableFile: public RandomAccessFile { virtual Status Read(uint64_t offset, size_t n, Slice* result, char* scratch) const override { Status s; - if (offset + n > length_) { + if (offset > length_) { *result = Slice(); - s = IOError(filename_, EINVAL); - } else { - *result = Slice(reinterpret_cast(mmapped_region_) + offset, n); + return IOError(filename_, EINVAL); + } else if (offset + n > length_) { + n = length_ - offset; } + *result = Slice(reinterpret_cast(mmapped_region_) + offset, n); return s; } virtual Status InvalidateCache(size_t offset, size_t length) override {