Serialization: fix serialization of strings containing a 0-byte

rdar://156433955
This commit is contained in:
Erik Eckstein
2025-08-05 08:32:26 +02:00
parent 4d7df08e9b
commit f4c89d2ba0
2 changed files with 12 additions and 6 deletions

View File

@@ -1422,11 +1422,13 @@ StringRef ModuleFileSharedCore::getIdentifierText(IdentifierID IID) const {
assert(!IdentifierData.empty() && "no identifier data in module");
StringRef rawStrPtr = IdentifierData.substr(offset);
size_t terminatorOffset = rawStrPtr.find('\0');
assert(terminatorOffset != StringRef::npos &&
size_t endOffset = ((rawID + 1 < Identifiers.size()) ?
Identifiers[rawID + 1] : IdentifierData.size()) - 1;
ASSERT(IdentifierData[endOffset] == '\0' &&
"unterminated identifier string data");
return rawStrPtr.slice(0, terminatorOffset);
return IdentifierData.slice(offset, endOffset);
}
ModuleFileSharedCore::ModuleFileSharedCore(