From 7f990d7a76f8a3a9006a5368e6aa61d573db6f29 Mon Sep 17 00:00:00 2001 From: Chiraffollo Date: Sat, 1 Jul 2023 13:40:07 +0200 Subject: [PATCH] Fix #709 in intrusive_list operator-> (#721) --- 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 88d3e71b..4a169e3f 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 92b668a6..04a87f8c 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 194ff4f9..66750b0d 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) {