From b16c34c5e83337ca9e95a202a6996c035bbb8132 Mon Sep 17 00:00:00 2001 From: Chiraffollo Date: Fri, 30 Jun 2023 12:03:31 +0200 Subject: [PATCH] Fix #709 in intrusive_list operator-> --- include/etl/intrusive_list.h | 2 +- test/test_intrusive_forward_list.cpp | 30 ++++++++++++++++++++++++++++ test/test_intrusive_list.cpp | 30 ++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+), 1 deletion(-) diff --git a/include/etl/intrusive_list.h b/include/etl/intrusive_list.h index 88d3e71be..4a169e3f3 100644 --- a/include/etl/intrusive_list.h +++ b/include/etl/intrusive_list.h @@ -440,7 +440,7 @@ namespace etl pointer operator ->() const { - return *static_cast(p_value); + return static_cast(p_value); } friend bool operator == (const iterator& lhs, const iterator& rhs) diff --git a/test/test_intrusive_forward_list.cpp b/test/test_intrusive_forward_list.cpp index 92b668a66..04a87f8c0 100644 --- a/test/test_intrusive_forward_list.cpp +++ b/test/test_intrusive_forward_list.cpp @@ -209,6 +209,21 @@ namespace CHECK(are_equal); } + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_iterator_arrow_operator) + { + ItemNDCNode item1("1"); + ItemNDCNode item2("2"); + DataNDC0 data; + data.push_front(item2); + data.push_front(item1); + + auto iter = data.begin(); + CHECK(*(iter.operator->()) == item1); + ++iter; + CHECK(*(iter.operator->()) == item2); + } + //************************************************************************* TEST_FIXTURE(SetupFixture, test_const_iterator) { @@ -219,6 +234,21 @@ namespace CHECK(are_equal); } + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_const_iterator_arrow_operator) + { + ItemNDCNode item1("1"); + ItemNDCNode item2("2"); + DataNDC0 data; + data.push_front(item2); + data.push_front(item1); + + auto iter = data.cbegin(); + CHECK(*(iter.operator->()) == item1); + ++iter; + CHECK(*(iter.operator->()) == item2); + } + //************************************************************************* TEST_FIXTURE(SetupFixture, test_clear) { diff --git a/test/test_intrusive_list.cpp b/test/test_intrusive_list.cpp index 194ff4f94..66750b0dc 100644 --- a/test/test_intrusive_list.cpp +++ b/test/test_intrusive_list.cpp @@ -222,6 +222,21 @@ namespace CHECK(are_equal); } + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_iterator_arrow_operator) + { + ItemNDCNode item1("1"); + ItemNDCNode item2("2"); + DataNDC0 data; + data.push_back(item1); + data.push_back(item2); + + auto iter = data.begin(); + CHECK(*(iter.operator->()) == item1); + ++iter; + CHECK(*(iter.operator->()) == item2); + } + //************************************************************************* TEST_FIXTURE(SetupFixture, test_const_iterator) { @@ -234,6 +249,21 @@ namespace CHECK(are_equal); } + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_const_iterator_arrow_operator) + { + ItemNDCNode item1("1"); + ItemNDCNode item2("2"); + DataNDC0 data; + data.push_back(item1); + data.push_back(item2); + + auto iter = data.cbegin(); + CHECK(*(iter.operator->()) == item1); + ++iter; + CHECK(*(iter.operator->()) == item2); + } + //************************************************************************* TEST_FIXTURE(SetupFixture, test_clear) {