fix m_zero_offset init and update

This commit is contained in:
Lendemor 2016-07-27 19:52:42 +02:00
parent 7eb5994405
commit 2705651565
2 changed files with 5 additions and 3 deletions

View File

@ -72,8 +72,10 @@ void SparrowShell::update()
} }
void SparrowShell::ShellBuffer::push(std::string s){ void SparrowShell::ShellBuffer::push(std::string s){
if (m_buffer.size() >= m_size) if (m_buffer.size() >= m_size){
m_buffer[m_zero_offset++] = s; m_buffer[m_zero_offset++] = s;
m_zero_offset %= m_size;
}
else else
m_buffer.push_back(s); m_buffer.push_back(s);
} }

View File

@ -36,11 +36,11 @@ private:
class ShellBuffer{ class ShellBuffer{
private: private:
std::vector<std::string> m_buffer; std::vector<std::string> m_buffer;
int m_zero_offset; int m_zero_offset = 0;
unsigned int m_size; unsigned int m_size;
public: public:
ShellBuffer(int size):m_size(size){} ShellBuffer(int size):m_size(size){}
std::string& operator[](int i){return m_buffer[m_zero_offset+i%m_size];} std::string& operator[](int i){return m_buffer[(m_zero_offset+i)%m_size];}
void push(std::string); void push(std::string);
unsigned int size(){return m_size;} unsigned int size(){return m_size;}
}; };