The old code had a bug if the description was between 75 and 85 characters or so as it substracted PSLen from Desc.size() instead of MAX_LINE_LEN in the compare. It also calculated odd values for PosE on the last split and just let StringRef::slice take care of it being larger than the description string.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238187
91177308-0d34-0410-b5e6-
96231b3b80d8
StringRef Prefix("|* ");
StringRef Suffix(" *|");
printLine(OS, Prefix, ' ', Suffix);
StringRef Prefix("|* ");
StringRef Suffix(" *|");
printLine(OS, Prefix, ' ', Suffix);
+ size_t PSLen = Prefix.size() + Suffix.size();
+ assert(PSLen < MAX_LINE_LEN);
- do{
- size_t PSLen = Suffix.size() + Prefix.size();
- size_t PosE = Pos + ((MAX_LINE_LEN > (Desc.size() - PSLen)) ?
- Desc.size() :
- MAX_LINE_LEN - PSLen);
- printLine(OS, Prefix + Desc.slice(Pos, PosE), ' ', Suffix);
- Pos = PosE;
+ do {
+ size_t Length = std::min(Desc.size() - Pos, MAX_LINE_LEN - PSLen);
+ printLine(OS, Prefix + Desc.substr(Pos, Length), ' ', Suffix);
+ Pos += Length;
} while (Pos < Desc.size());
printLine(OS, Prefix, ' ', Suffix);
printLine(OS, Prefix + "Automatically generated file, do not edit!", ' ',
} while (Pos < Desc.size());
printLine(OS, Prefix, ' ', Suffix);
printLine(OS, Prefix + "Automatically generated file, do not edit!", ' ',