aboutsummaryrefslogtreecommitdiff
path: root/pd/portaudio_v18/pablio/ringbuffer_pd.c
diff options
context:
space:
mode:
authorGuenter Geiger <ggeiger@users.sourceforge.net>2004-02-02 11:28:02 +0000
committerGuenter Geiger <ggeiger@users.sourceforge.net>2004-02-02 11:28:02 +0000
commitae6b5d89ea93b95c2990895077cf5e8f0bba9ad9 (patch)
tree1e7570f11ac688e94342968e90301c4684e61193 /pd/portaudio_v18/pablio/ringbuffer_pd.c
parentf26399eba6ee6ce9eb7bae9a4b60a90dc2ebca94 (diff)
This commit was generated by cvs2svn to compensate for changes in r1301,
which included commits to RCS files with non-trunk default branches. svn path=/trunk/; revision=1302
Diffstat (limited to 'pd/portaudio_v18/pablio/ringbuffer_pd.c')
-rw-r--r--pd/portaudio_v18/pablio/ringbuffer_pd.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/pd/portaudio_v18/pablio/ringbuffer_pd.c b/pd/portaudio_v18/pablio/ringbuffer_pd.c
index 97e060c1..0b2c4da5 100644
--- a/pd/portaudio_v18/pablio/ringbuffer_pd.c
+++ b/pd/portaudio_v18/pablio/ringbuffer_pd.c
@@ -1,5 +1,5 @@
/*
- * $Id: ringbuffer_pd.c,v 1.1.1.1 2003-05-09 16:04:00 ggeiger Exp $
+ * $Id: ringbuffer_pd.c,v 1.1.1.2 2004-02-02 11:27:58 ggeiger Exp $
* ringbuffer.c
* Ring Buffer utility..
*
@@ -58,9 +58,12 @@ long RingBuffer_Init( RingBuffer *rbuf, long numBytes, void *dataPtr )
** Return number of bytes available for reading. */
long RingBuffer_GetReadAvailable( RingBuffer *rbuf )
{
- long ret = (rbuf->writeIndex - rbuf->readIndex) + rbuf->bufferSize;
- if (ret >= 2 * rbuf->bufferSize)
- ret -= 2 * rbuf->bufferSize;
+ long ret = rbuf->writeIndex - rbuf->readIndex;
+ if (ret < 0)
+ ret += 2 * rbuf->bufferSize;
+ if (ret < 0 || ret > rbuf->bufferSize)
+ fprintf(stderr,
+ "consistency check failed: RingBuffer_GetReadAvailable\n");
return ( ret );
}
/***************************************************************************
@@ -119,7 +122,7 @@ long RingBuffer_GetWriteRegions( RingBuffer *rbuf, long numBytes,
long RingBuffer_AdvanceWriteIndex( RingBuffer *rbuf, long numBytes )
{
long ret = (rbuf->writeIndex + numBytes);
- if ( ret > 2 * rbuf->bufferSize)
+ if ( ret >= 2 * rbuf->bufferSize)
ret -= 2 * rbuf->bufferSize; /* check for end of buffer */
return rbuf->writeIndex = ret;
}
@@ -139,7 +142,7 @@ long RingBuffer_GetReadRegions( RingBuffer *rbuf, long numBytes,
if( numBytes > available ) numBytes = available;
/* Check to see if read is not contiguous. */
index = rbuf->readIndex;
- while (index > rbuf->bufferSize)
+ while (index >= rbuf->bufferSize)
index -= rbuf->bufferSize;
if( (index + numBytes) > rbuf->bufferSize )
@@ -165,7 +168,7 @@ long RingBuffer_GetReadRegions( RingBuffer *rbuf, long numBytes,
long RingBuffer_AdvanceReadIndex( RingBuffer *rbuf, long numBytes )
{
long ret = (rbuf->readIndex + numBytes);
- if( ret > 2 * rbuf->bufferSize)
+ if( ret >= 2 * rbuf->bufferSize)
ret -= 2 * rbuf->bufferSize;
return rbuf->readIndex = ret;
}