diff --git a/components/drivers/src/ringbuffer.c b/components/drivers/src/ringbuffer.c index baeeea0e5060ffbab8a2a6c5da2a2530ba9c7bf9..48bf590f8c6fe57f46cc1196bbac62081509c605 100644 --- a/components/drivers/src/ringbuffer.c +++ b/components/drivers/src/ringbuffer.c @@ -119,8 +119,11 @@ rt_size_t rt_ringbuffer_put_force(struct rt_ringbuffer *rb, space_length = rt_ringbuffer_space_len(rb); - if (length > space_length) + if (length > rb->buffer_size) + { + ptr = &ptr[length - rb->buffer_size]; length = rb->buffer_size; + } if (rb->buffer_size - rb->write_index > length) {