diff --git a/include/RingBuffer.h b/include/RingBuffer.h index fa4d33c..9300aeb 100644 --- a/include/RingBuffer.h +++ b/include/RingBuffer.h @@ -160,6 +160,8 @@ class RingBuffer block.SetLength(max_num_reads); } + read_position = (read_position + num_reads_requested) % LENGTH; + return block; } @@ -169,7 +171,11 @@ class RingBuffer */ void Skip(unsigned int num_reads) { - read_position = (read_position + num_reads) % LENGTH; + if ((read_position + num_reads) % LENGTH <= write_position){ + read_position = (read_position + num_reads) % LENGTH; + }else{ + read_position = write_position; + } } bool Overrun() @@ -227,4 +233,4 @@ class RingBuffer bool overrun_flag; }; -#endif \ No newline at end of file +#endif