forked from OSchip/llvm-project
[UB] Another place where we were trying to put string data into
a BumpPtrAllocator. This at least now handles the case where there is no concatentation without calling memcpy on a null pointer. It might be interesting to handle the case where everything is empty without round-tripping through the allocator, but it wasn't clear to me if the pointer returned is significant in any way, so I've left it in a conservatively more-correct state. Again, found with UBSan. llvm-svn: 243948
This commit is contained in:
parent
f0c627d5f8
commit
a91ba1260a
|
@ -485,8 +485,10 @@ private:
|
|||
/// are concatenated.
|
||||
StringRef internString(StringRef A, StringRef B = StringRef()) {
|
||||
char *Data = DebugInfoNames.Allocate<char>(A.size() + B.size());
|
||||
std::memcpy(Data, A.data(), A.size());
|
||||
std::memcpy(Data + A.size(), B.data(), B.size());
|
||||
if (!A.empty())
|
||||
std::memcpy(Data, A.data(), A.size());
|
||||
if (!B.empty())
|
||||
std::memcpy(Data + A.size(), B.data(), B.size());
|
||||
return StringRef(Data, A.size() + B.size());
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue