From f831d6e8dfd8f02b87d46b5492b5b4fc46e423da Mon Sep 17 00:00:00 2001 From: yanmorin <yanmorin> Date: Fri, 1 Sep 2006 14:56:51 +0000 Subject: [PATCH] Remove segfault with float and mic/speaker < 100 --- src/audio/ringbuffer.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/audio/ringbuffer.cpp b/src/audio/ringbuffer.cpp index fb3c53dc3c..3176cc728a 100644 --- a/src/audio/ringbuffer.cpp +++ b/src/audio/ringbuffer.cpp @@ -92,9 +92,9 @@ RingBuffer::Put(void* buffer, int toCopy, unsigned short volume) { // put the data inside the buffer. if (volume!=100) { - SFLDataFormat* src16 = (SFLDataFormat*)src; - int int16len = (block >> 1); - for (int i=0; i < int16len; i++) { src16[i] = src16[i] * volume / 100; } + SFLDataFormat* start = (SFLDataFormat*)src; + int nbSample = block / sizeof(SFLDataFormat); + for (int i=0; i<nbSample; i++) { start[i] = start[i] * volume / 100; } } // bcopy(src, dest, len) //fprintf(stderr, "has %d put %d\t", len, block); @@ -143,8 +143,8 @@ RingBuffer::Get(void *buffer, int toCopy, unsigned short volume) { if(volume!=100) { SFLDataFormat* start = (SFLDataFormat*)(mBuffer + mStart); - int int16len = (block >> 1); - for (int i=0; i<int16len; i++) { start[i] = start[i] * volume / 100; } + int nbSample = block / sizeof(SFLDataFormat); + for (int i=0; i<nbSample; i++) { start[i] = start[i] * volume / 100; } } // bcopy(src, dest, len) bcopy (mBuffer + mStart, dest, block); -- GitLab