- m_buffer_start = (char *)realloc(m_buffer_start, m_buffer_size+size);
- // I round a bit
- m_buffer_size += size;
- m_buffer_end = m_buffer_start+m_buffer_size;
+ if (!m_buffer_start)
+ SetBufferIO(size);
+ else {
+ size_t delta = m_buffer_pos-m_buffer_start;
+
+ m_buffer_start = (char *)realloc(m_buffer_start, m_buffer_size+size);
+ m_buffer_pos = m_buffer_start + delta;
+ // I round a bit
+ m_buffer_size += size;
+ m_buffer_end = m_buffer_start+m_buffer_size;
+ }