diff options
author | Vedant Kumar <vsk@apple.com> | 2016-09-26 17:57:13 +0000 |
---|---|---|
committer | Vedant Kumar <vsk@apple.com> | 2016-09-26 17:57:13 +0000 |
commit | 5cd496ba3ab213f0c7258da40f06d6d111d5fd2d (patch) | |
tree | 769c5ac3a722354dee21c8f94aa753ea3e84a8bd /llvm/tools/llvm-cov/CoverageReport.cpp | |
parent | f72ac492ccea2d11c3c0dd10bcdaadec7537f9ce (diff) | |
download | bcm5719-llvm-5cd496ba3ab213f0c7258da40f06d6d111d5fd2d.tar.gz bcm5719-llvm-5cd496ba3ab213f0c7258da40f06d6d111d5fd2d.zip |
[llvm-cov] Silence a warning from the MSVC runtime (NFC)
Rework getLongestCommonPrefixLen() so that it doesn't access string null
terminators. The old version with std::mismatch would do this:
|
v
Strings[0] = ['a', nil]
Strings[1] = ['a', 'a', nil]
^
|
This should silence a warning from the MSVC runtime (PR30515). As
before, I tested this out by preparing a coverage report for FileCheck.
Thanks to Yaron Keren for the report!
llvm-svn: 282422
Diffstat (limited to 'llvm/tools/llvm-cov/CoverageReport.cpp')
-rw-r--r-- | llvm/tools/llvm-cov/CoverageReport.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/tools/llvm-cov/CoverageReport.cpp b/llvm/tools/llvm-cov/CoverageReport.cpp index 24d7c661aad..5a56579149a 100644 --- a/llvm/tools/llvm-cov/CoverageReport.cpp +++ b/llvm/tools/llvm-cov/CoverageReport.cpp @@ -123,10 +123,12 @@ raw_ostream::Colors determineCoveragePercentageColor(const T &Info) { unsigned getLongestCommonPrefixLen(ArrayRef<std::string> Strings) { unsigned LCP = Strings[0].size(); for (unsigned I = 1, E = Strings.size(); LCP > 0 && I < E; ++I) { - auto Mismatch = - std::mismatch(Strings[0].begin(), Strings[0].end(), Strings[I].begin()) - .first; - LCP = std::min(LCP, (unsigned)std::distance(Strings[0].begin(), Mismatch)); + unsigned Cursor; + StringRef S = Strings[I]; + for (Cursor = 0; Cursor < LCP && Cursor < S.size(); ++Cursor) + if (Strings[0][Cursor] != S[Cursor]) + break; + LCP = std::min(LCP, Cursor); } return LCP; } |