From 0f9150c64b27f8a37e249db4b2d5889d8daa4b27 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Thu, 7 Jul 2016 09:31:41 +0100 Subject: [PATCH] Modify the space calculations slightly. --- RingBuffer.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/RingBuffer.h b/RingBuffer.h index 7805005..f700043 100644 --- a/RingBuffer.h +++ b/RingBuffer.h @@ -109,13 +109,17 @@ public: unsigned int freeSpace() const { - if (m_oPtr == m_iPtr) - return m_length; + unsigned int len = m_length; if (m_oPtr > m_iPtr) - return m_oPtr - m_iPtr; + len = m_oPtr - m_iPtr; + else if (m_iPtr > m_oPtr) + len = m_length - (m_iPtr - m_oPtr); - return (m_length + m_oPtr) - m_iPtr; + if (len > m_length) + len = 0U; + + return len; } unsigned int dataSize() const