diff --git a/libobs/util/circlebuf.h b/libobs/util/circlebuf.h index deda4cfd9..5f95049ae 100644 --- a/libobs/util/circlebuf.h +++ b/libobs/util/circlebuf.h @@ -132,12 +132,12 @@ static inline void circlebuf_place(struct circlebuf *cb, size_t position, data_end_pos = position + size; if (data_end_pos > cb->capacity) { - size_t back_size = cb->capacity - data_end_pos; + size_t back_size = data_end_pos - cb->capacity; size_t loop_size = size - back_size; if (back_size) - memcpy((uint8_t*)cb->data + position, data, back_size); - memcpy(cb->data, (uint8_t*)data + back_size, loop_size); + memcpy((uint8_t*)cb->data + position, data, loop_size); + memcpy(cb->data, (uint8_t*)data + loop_size, back_size); } else { memcpy((uint8_t*)cb->data + position, data, size); }