tbaeder created this revision. tbaeder added reviewers: clang, cjdb, aaron.ballman. Herald added a project: All. tbaeder requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
Seems unnecessary to create a `StringRef` here just so we can drop the trailing null bytes. We can do that with the `std::string` we create anyway. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D151300 Files: clang/lib/Frontend/TextDiagnostic.cpp clang/test/Misc/diag-null-bytes-in-line.cpp Index: clang/lib/Frontend/TextDiagnostic.cpp =================================================================== --- clang/lib/Frontend/TextDiagnostic.cpp +++ clang/lib/Frontend/TextDiagnostic.cpp @@ -1203,14 +1203,12 @@ if (size_t(LineEnd - LineStart) > MaxLineLengthToPrint) return; - // Trim trailing null-bytes. - StringRef Line(LineStart, LineEnd - LineStart); - while (!Line.empty() && Line.back() == '\0' && - (LineNo != CaretLineNo || Line.size() > CaretColNo)) - Line = Line.drop_back(); - // Copy the line of code into an std::string for ease of manipulation. - std::string SourceLine(Line.begin(), Line.end()); + std::string SourceLine(LineStart, LineEnd); + // Remove trailing null bytes. + while (!SourceLine.empty() && SourceLine.back() == '\0' && + (LineNo != CaretLineNo || SourceLine.size() > CaretColNo)) + SourceLine.pop_back(); // Build the byte to column map. const SourceColumnMap sourceColMap(SourceLine, DiagOpts->TabStop);
Index: clang/lib/Frontend/TextDiagnostic.cpp =================================================================== --- clang/lib/Frontend/TextDiagnostic.cpp +++ clang/lib/Frontend/TextDiagnostic.cpp @@ -1203,14 +1203,12 @@ if (size_t(LineEnd - LineStart) > MaxLineLengthToPrint) return; - // Trim trailing null-bytes. - StringRef Line(LineStart, LineEnd - LineStart); - while (!Line.empty() && Line.back() == '\0' && - (LineNo != CaretLineNo || Line.size() > CaretColNo)) - Line = Line.drop_back(); - // Copy the line of code into an std::string for ease of manipulation. - std::string SourceLine(Line.begin(), Line.end()); + std::string SourceLine(LineStart, LineEnd); + // Remove trailing null bytes. + while (!SourceLine.empty() && SourceLine.back() == '\0' && + (LineNo != CaretLineNo || SourceLine.size() > CaretColNo)) + SourceLine.pop_back(); // Build the byte to column map. const SourceColumnMap sourceColMap(SourceLine, DiagOpts->TabStop);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits