diff --git a/src/asmjit/core/zonevector.cpp b/src/asmjit/core/zonevector.cpp index 7ab53bf..81d5d50 100644 --- a/src/asmjit/core/zonevector.cpp +++ b/src/asmjit/core/zonevector.cpp @@ -312,6 +312,8 @@ static void test_zone_vector(ZoneAllocator* allocator, const char* typeName) { EXPECT(vec.size() == uint32_t(kMax)); EXPECT(vec.indexOf(T(kMax - 1)) == uint32_t(kMax - 1)); + EXPECT(vec.rbegin()[0] == kMax - 1); + vec.release(allocator); } diff --git a/src/asmjit/core/zonevector.h b/src/asmjit/core/zonevector.h index 2765a3a..2245db2 100644 --- a/src/asmjit/core/zonevector.h +++ b/src/asmjit/core/zonevector.h @@ -157,8 +157,8 @@ public: typedef T* iterator; typedef const T* const_iterator; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; //! \name Construction & Destruction //! \{ @@ -198,17 +198,17 @@ public: inline iterator end() noexcept { return iterator(data() + _size); }; inline const_iterator end() const noexcept { return const_iterator(data() + _size); }; - inline reverse_iterator rbegin() noexcept { return reverse_iterator(data()); }; - inline const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator(data()); }; + inline reverse_iterator rbegin() noexcept { return reverse_iterator(end()); }; + inline const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator(end()); }; - inline reverse_iterator rend() noexcept { return reverse_iterator(data() + _size); }; - inline const_reverse_iterator rend() const noexcept { return const_reverse_iterator(data() + _size); }; + inline reverse_iterator rend() noexcept { return reverse_iterator(begin()); }; + inline const_reverse_iterator rend() const noexcept { return const_reverse_iterator(begin()); }; inline const_iterator cbegin() const noexcept { return const_iterator(data()); }; inline const_iterator cend() const noexcept { return const_iterator(data() + _size); }; - inline const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(data()); }; - inline const_reverse_iterator crend() const noexcept { return const_reverse_iterator(data() + _size); }; + inline const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(cend()); }; + inline const_reverse_iterator crend() const noexcept { return const_reverse_iterator(cbegin()); }; //! \}