mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-20 05:23:04 +01:00
Fix CircularBuffer push_back method.
This commit is contained in:
@@ -78,16 +78,30 @@ public:
|
||||
|
||||
void push_back(const value_type& val)
|
||||
{
|
||||
if (_size == capacity())
|
||||
if (_size == 0)
|
||||
{
|
||||
_head = (_head + 1) % capacity();
|
||||
_elements[_head] = val;
|
||||
_tail = _head;
|
||||
_size++;
|
||||
}
|
||||
else if (_size != capacity())
|
||||
{
|
||||
_tail++;
|
||||
if (_tail == capacity())
|
||||
_tail = 0;
|
||||
_size++;
|
||||
_elements[_tail] = val;
|
||||
}
|
||||
else
|
||||
{
|
||||
_size++;
|
||||
_head++;
|
||||
if (_head == capacity())
|
||||
_head = 0;
|
||||
_tail++;
|
||||
if (_tail == capacity())
|
||||
_tail = 0;
|
||||
_elements[_tail] = val;
|
||||
}
|
||||
_elements[_tail] = val;
|
||||
_tail = (_tail + 1) % capacity();
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user