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:
parent
0d14cb5797
commit
3bfa8e5863
2 changed files with 26 additions and 4 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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");
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue