diff options
| author | 2018-04-06 14:26:03 +0000 | |
|---|---|---|
| committer | 2018-04-06 14:26:03 +0000 | |
| commit | bdabc2f19ffb9e20600dad6e8a300842a7bda50e (patch) | |
| tree | c50e7b2e5449b074651bb82a58517a8ebc4a8cf7 /gnu/llvm/lib/Support/FoldingSet.cpp | |
| parent | Print a 'p' flag for file descriptors that were opened after pledge(2). (diff) | |
| download | wireguard-openbsd-bdabc2f19ffb9e20600dad6e8a300842a7bda50e.tar.xz wireguard-openbsd-bdabc2f19ffb9e20600dad6e8a300842a7bda50e.zip | |
Import LLVM 6.0.1 release including clang, lld and lldb.
"where is the kaboom?" deraadt@
Diffstat (limited to 'gnu/llvm/lib/Support/FoldingSet.cpp')
| -rw-r--r-- | gnu/llvm/lib/Support/FoldingSet.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gnu/llvm/lib/Support/FoldingSet.cpp b/gnu/llvm/lib/Support/FoldingSet.cpp index 4496d06a15f..94237954903 100644 --- a/gnu/llvm/lib/Support/FoldingSet.cpp +++ b/gnu/llvm/lib/Support/FoldingSet.cpp @@ -215,6 +215,10 @@ static void **GetBucketFor(unsigned Hash, void **Buckets, unsigned NumBuckets) { /// AllocateBuckets - Allocated initialized bucket memory. static void **AllocateBuckets(unsigned NumBuckets) { void **Buckets = static_cast<void**>(calloc(NumBuckets+1, sizeof(void*))); + + if (Buckets == nullptr) + report_bad_alloc_error("Allocation of Buckets failed."); + // Set the very last bucket to be a non-null "pointer". Buckets[NumBuckets] = reinterpret_cast<void*>(-1); return Buckets; @@ -271,10 +275,11 @@ void FoldingSetBase::GrowBucketCount(unsigned NewBucketCount) { assert(isPowerOf2_32(NewBucketCount) && "Bad bucket count!"); void **OldBuckets = Buckets; unsigned OldNumBuckets = NumBuckets; - NumBuckets = NewBucketCount; // Clear out new buckets. - Buckets = AllocateBuckets(NumBuckets); + Buckets = AllocateBuckets(NewBucketCount); + // Set NumBuckets only if allocation of new buckets was succesful + NumBuckets = NewBucketCount; NumNodes = 0; // Walk the old buckets, rehashing nodes into their new place. |
