| From 787d5052a6034cc722b073c652cc610ae037f933 Mon Sep 17 00:00:00 2001 |
| From: Levi Tamasi <ltamasi@fb.com> |
| 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 |
| |