diff options
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Support/MemoryBuffer.cpp')
-rw-r--r-- | contrib/llvm-project/llvm/lib/Support/MemoryBuffer.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/contrib/llvm-project/llvm/lib/Support/MemoryBuffer.cpp b/contrib/llvm-project/llvm/lib/Support/MemoryBuffer.cpp index 7816779cca1d..9872dfa78b26 100644 --- a/contrib/llvm-project/llvm/lib/Support/MemoryBuffer.cpp +++ b/contrib/llvm-project/llvm/lib/Support/MemoryBuffer.cpp @@ -13,10 +13,9 @@ #include "llvm/Support/MemoryBuffer.h" #include "llvm/ADT/SmallString.h" #include "llvm/Config/config.h" -#include "llvm/Support/AutoConvert.h" +#include "llvm/Support/Errc.h" #include "llvm/Support/Error.h" #include "llvm/Support/ErrorHandling.h" -#include "llvm/Support/Errc.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/MathExtras.h" #include "llvm/Support/Process.h" @@ -32,13 +31,17 @@ #else #include <io.h> #endif + +#ifdef __MVS__ +#include "llvm/Support/AutoConvert.h" +#endif using namespace llvm; //===----------------------------------------------------------------------===// // MemoryBuffer implementation itself. //===----------------------------------------------------------------------===// -MemoryBuffer::~MemoryBuffer() { } +MemoryBuffer::~MemoryBuffer() = default; /// init - Initialize this MemoryBuffer as a reference to externally allocated /// memory, memory that we know is already null terminated. @@ -286,6 +289,8 @@ WritableMemoryBuffer::getNewUninitMemBuffer(size_t Size, const Twine &BufferName StringRef NameRef = BufferName.toStringRef(NameBuf); size_t AlignedStringLen = alignTo(sizeof(MemBuffer) + NameRef.size() + 1, 16); size_t RealLen = AlignedStringLen + Size + 1; + if (RealLen <= Size) // Check for rollover. + return nullptr; char *Mem = static_cast<char*>(operator new(RealLen, std::nothrow)); if (!Mem) return nullptr; @@ -533,4 +538,4 @@ MemoryBufferRef MemoryBuffer::getMemBufferRef() const { return MemoryBufferRef(Data, Identifier); } -SmallVectorMemoryBuffer::~SmallVectorMemoryBuffer() {} +SmallVectorMemoryBuffer::~SmallVectorMemoryBuffer() = default; |