[llvm] 4e86e5e - [DenseMap] Add assertion that end() iterator isn't derefenced.
Eli Friedman via llvm-commits
llvm-commits at lists.llvm.org
Sat Apr 11 14:54:28 PDT 2020
Author: Eli Friedman
Date: 2020-04-11T14:53:09-07:00
New Revision: 4e86e5eedc684453fe0af6eca2ebdbff33db012c
URL: https://github.com/llvm/llvm-project/commit/4e86e5eedc684453fe0af6eca2ebdbff33db012c
DIFF: https://github.com/llvm/llvm-project/commit/4e86e5eedc684453fe0af6eca2ebdbff33db012c.diff
LOG: [DenseMap] Add assertion that end() iterator isn't derefenced.
This would have saved me some time this morning.
Added:
Modified:
llvm/include/llvm/ADT/DenseMap.h
Removed:
################################################################################
diff --git a/llvm/include/llvm/ADT/DenseMap.h b/llvm/include/llvm/ADT/DenseMap.h
index b73afae4bce6..8d83f7e5507f 100644
--- a/llvm/include/llvm/ADT/DenseMap.h
+++ b/llvm/include/llvm/ADT/DenseMap.h
@@ -1201,12 +1201,14 @@ class DenseMapIterator : DebugEpochBase::HandleBase {
reference operator*() const {
assert(isHandleInSync() && "invalid iterator access!");
+ assert(Ptr != End && "dereferencing end() iterator");
if (shouldReverseIterate<KeyT>())
return Ptr[-1];
return *Ptr;
}
pointer operator->() const {
assert(isHandleInSync() && "invalid iterator access!");
+ assert(Ptr != End && "dereferencing end() iterator");
if (shouldReverseIterate<KeyT>())
return &(Ptr[-1]);
return Ptr;
@@ -1229,6 +1231,7 @@ class DenseMapIterator : DebugEpochBase::HandleBase {
inline DenseMapIterator& operator++() { // Preincrement
assert(isHandleInSync() && "invalid iterator access!");
+ assert(Ptr != End && "incrementing end() iterator");
if (shouldReverseIterate<KeyT>()) {
--Ptr;
RetreatPastEmptyBuckets();
More information about the llvm-commits
mailing list