Always initialise bytes_cleared when clearing PcmBuffers

custom
jacqueline 8 months ago
parent 022aa38396
commit 40c754a72a
  1. 13
      src/drivers/pcm_buffer.cpp

@ -66,10 +66,17 @@ IRAM_ATTR auto PcmBuffer::receive(std::span<int16_t> dest, bool isr)
auto PcmBuffer::clear() -> void {
while (!isEmpty()) {
size_t bytes_cleared;
size_t bytes_cleared = 0;
void* data = xRingbufferReceive(ringbuf_, &bytes_cleared, 0);
vRingbufferReturnItem(ringbuf_, data);
received_ += bytes_cleared / sizeof(int16_t);
if (data) {
vRingbufferReturnItem(ringbuf_, data);
received_ += bytes_cleared / sizeof(int16_t);
} else {
// Defensively guard against looping forever if for some reason the
// buffer isn't draining.
ESP_LOGW(kTag, "PcmBuffer not draining");
break;
}
}
}

Loading…
Cancel
Save