diff options
Diffstat (limited to 'llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp')
-rw-r--r-- | llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp b/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp index e8105ab..330da8bd 100644 --- a/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp +++ b/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp @@ -25,31 +25,29 @@ namespace { // Return a string with the special characters in \p Str escaped. std::string escape(StringRef Str, const CoverageViewOptions &Opts) { - std::string Result; + std::string TabExpandedResult; unsigned ColNum = 0; // Record the column number. for (char C : Str) { - ++ColNum; - if (C == '&') - Result += "&"; - else if (C == '<') - Result += "<"; - else if (C == '>') - Result += ">"; - else if (C == '\"') - Result += """; - else if (C == '\n' || C == '\r') { - Result += C; - ColNum = 0; - } else if (C == '\t') { - // Replace '\t' with TabSize spaces. - unsigned NumSpaces = Opts.TabSize - (--ColNum % Opts.TabSize); + if (C == '\t') { + // Replace '\t' with up to TabSize spaces. + unsigned NumSpaces = Opts.TabSize - (ColNum % Opts.TabSize); for (unsigned I = 0; I < NumSpaces; ++I) - Result += " "; + TabExpandedResult += ' '; ColNum += NumSpaces; - } else - Result += C; + } else { + TabExpandedResult += C; + if (C == '\n' || C == '\r') + ColNum = 0; + else + ++ColNum; + } + } + std::string EscapedHTML; + { + raw_string_ostream OS{EscapedHTML}; + PrintHTMLEscaped(TabExpandedResult, OS); } - return Result; + return EscapedHTML; } // Create a \p Name tag around \p Str, and optionally set its \p ClassName. |