diff --git a/src/MetadataFile.cpp b/src/MetadataFile.cpp index a9ba6b4ab..cc44ed3d5 100755 --- a/src/MetadataFile.cpp +++ b/src/MetadataFile.cpp @@ -221,11 +221,18 @@ vector MetadataFile::metadataRead(off_t offset, size_t length) c vector ret; size_t foundLen = 0; + if (mObjects.size() == 0) + return ret; + + uint64_t lastOffset = mObjects.rbegin()->offset; auto i = mObjects.begin(); // find the first object in range + // Note, the last object in mObjects may not be full, compare the last one against its maximum + // size rather than its current size. while (i != mObjects.end()) { - if ((uint64_t) offset <= (i->offset + i->length - 1)) + if ((uint64_t) offset <= (i->offset + i->length - 1) || + (i->offset == lastOffset && ((uint64_t) offset <= i->offset + mpConfig->mObjectSize - 1))) break; ++i; }