From dbcc9b36b148857c17ced736cfc93dc8883038db Mon Sep 17 00:00:00 2001 From: Michael Bebenita Date: Wed, 28 Jul 2010 00:03:47 -0700 Subject: [PATCH] Let circular buffers actually grow to max sz, reset _next when resizing. --- src/rt/circular_buffer.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/rt/circular_buffer.cpp b/src/rt/circular_buffer.cpp index 101d017663d..a93f2572826 100644 --- a/src/rt/circular_buffer.cpp +++ b/src/rt/circular_buffer.cpp @@ -63,12 +63,14 @@ circular_buffer::enqueue(void *src) { // Grow if necessary. if (_unread == _buffer_sz) { - I(dom, _buffer_sz <= MAX_CIRCULAR_BUFFFER_SIZE); - void *tmp = dom->malloc(_buffer_sz << 1); - transfer(tmp); - _buffer_sz <<= 1; + size_t new_buffer_sz = _buffer_sz << 1; + I(dom, new_buffer_sz <= MAX_CIRCULAR_BUFFFER_SIZE); + void *new_buffer = dom->malloc(new_buffer_sz); + transfer(new_buffer); dom->free(_buffer); - _buffer = (uint8_t *)tmp; + _buffer = (uint8_t *)new_buffer; + _next = 0; + _buffer_sz = new_buffer_sz; } dom->log(rust_log::MEM | rust_log::COMM,