summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam McCall <sam.mccall@gmail.com>2018-01-19 15:03:49 +0000
committerSam McCall <sam.mccall@gmail.com>2018-01-19 15:03:49 +0000
commiteb74ab8633d63fefceb9c1ab5b7fbf2b8d9779de (patch)
tree7de69024a70fcaa3679ff83b79a53d011d22388c
parent586b31b8707386f0f6d7cf02ef4a774dd4419110 (diff)
downloadbcm5719-llvm-eb74ab8633d63fefceb9c1ab5b7fbf2b8d9779de.tar.gz
bcm5719-llvm-eb74ab8633d63fefceb9c1ab5b7fbf2b8d9779de.zip
[clangd] Fix memcpy(?, null, 0) UB by switching to std::copy
llvm-svn: 322949
-rw-r--r--clang-tools-extra/clangd/FuzzyMatch.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/clang-tools-extra/clangd/FuzzyMatch.cpp b/clang-tools-extra/clangd/FuzzyMatch.cpp
index c4716cb3ae3..68ba695fe64 100644
--- a/clang-tools-extra/clangd/FuzzyMatch.cpp
+++ b/clang-tools-extra/clangd/FuzzyMatch.cpp
@@ -76,7 +76,7 @@ static constexpr int PerfectBonus = 3; // Perfect per-pattern-char score.
FuzzyMatcher::FuzzyMatcher(StringRef Pattern)
: PatN(std::min<int>(MaxPat, Pattern.size())), CaseSensitive(false),
ScoreScale(PatN ? float{1} / (PerfectBonus * PatN) : 0), WordN(0) {
- memcpy(Pat, Pattern.data(), PatN);
+ std::copy(Pattern.begin(), Pattern.begin() + PatN, Pat);
for (int I = 0; I < PatN; ++I) {
LowPat[I] = lower(Pat[I]);
CaseSensitive |= LowPat[I] != Pat[I];
@@ -200,7 +200,7 @@ bool FuzzyMatcher::init(StringRef NewWord) {
WordN = std::min<int>(MaxWord, NewWord.size());
if (PatN > WordN)
return false;
- memcpy(Word, NewWord.data(), WordN);
+ std::copy(NewWord.begin(), NewWord.begin() + WordN, Word);
if (PatN == 0)
return true;
for (int I = 0; I < WordN; ++I)
OpenPOWER on IntegriCloud