Fix bug in list where the wrong value was copied if an item was inserted at the beinging of the list

This commit is contained in:
Mark Haines 2015-07-15 16:31:45 +01:00
parent 0d14cb5797
commit 3bfa8e5863
2 changed files with 26 additions and 4 deletions

View file

@ -69,10 +69,10 @@ public:
} else if (pos == _end) { } else if (pos == _end) {
--pos; --pos;
} }
T * tmp = pos; T * tmp = _end - 1;
while (tmp != _end - 1) { while (tmp != pos) {
*(tmp + 1) = *tmp; *tmp = *(tmp - 1);
++tmp; --tmp;
} }
return pos; return pos;
} }

View file

@ -44,6 +44,28 @@ assert_equals(4, test_list[3]);
} /** List insert test **/ } /** List insert test **/
{ /** List insert beginning test **/
TestCase test_case("List insert beginning");
olm::List<int, 4> test_list;
assert_equals(std::size_t(0), test_list.size());
for (int i = 0; i < 4; ++i) {
test_list.insert(test_list.begin(), i);
}
assert_equals(std::size_t(4), test_list.size());
int i = 4;
for (auto item : test_list) {
assert_equals(--i, item);
}
} /** List insert test **/
{ /** List erase test **/ { /** List erase test **/
TestCase test_case("List erase"); TestCase test_case("List erase");