From 787d5052a6034cc722b073c652cc610ae037f933 Mon Sep 17 00:00:00 2001 From: Levi Tamasi Date: Fri, 22 Nov 2019 18:12:35 -0800 Subject: [PATCH 1/2] Fix the constness issues around autovector::iterator_impl's dereference operators (#6057) Summary: As described in detail in issue https://github.com/facebook/rocksdb/issues/6048, iterators' dereference operators (`*`, `->`, and `[]`) should return `pointer`s/`reference`s (as opposed to `const_pointer`s/`const_reference`s) even if the iterator itself is `const` to be in sync with the standard's iterator concept. Pull Request resolved: https://github.com/facebook/rocksdb/pull/6057 Test Plan: make check Differential Revision: D18623235 Pulled By: ltamasi fbshipit-source-id: 04e82d73bc0c67fb0ded018383af8dfc332050cc --- thirdparty/rocksdb/util/autovector.h | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/thirdparty/rocksdb/util/autovector.h b/thirdparty/rocksdb/util/autovector.h index b5c84712..6d337908 100644 --- a/thirdparty/rocksdb/util/autovector.h +++ b/thirdparty/rocksdb/util/autovector.h @@ -120,27 +120,20 @@ class autovector { } // -- Reference - reference operator*() { + reference operator*() const { assert(vect_->size() >= index_); return (*vect_)[index_]; } - const_reference operator*() const { - assert(vect_->size() >= index_); - return (*vect_)[index_]; - } - - pointer operator->() { + pointer operator->() const { assert(vect_->size() >= index_); return &(*vect_)[index_]; } - const_pointer operator->() const { - assert(vect_->size() >= index_); - return &(*vect_)[index_]; + reference operator[](difference_type len) const { + return *(*this + len); } - // -- Logical Operators bool operator==(const self_type& other) const { assert(vect_ == other.vect_); -- 2.41.0