diff --git a/lld/MachO/InputFiles.cpp b/lld/MachO/InputFiles.cpp --- a/lld/MachO/InputFiles.cpp +++ b/lld/MachO/InputFiles.cpp @@ -329,14 +329,14 @@ : buf + sec.offset, static_cast(sec.size)}; - auto splitRecords = [&](int recordSize) -> void { + auto splitRecords = [&](size_t recordSize) -> void { if (data.empty()) return; Subsections &subsections = section.subsections; subsections.reserve(data.size() / recordSize); for (uint64_t off = 0; off < data.size(); off += recordSize) { auto *isec = make( - section, data.slice(off, recordSize), align); + section, data.slice(off, std::min(data.size(), recordSize)), align); subsections.push_back({off, isec}); } section.doneSplitting = true;