diff --git a/esphome/components/api/api_overflow_buffer.cpp b/esphome/components/api/api_overflow_buffer.cpp index af3b670e0e..76b70c624e 100644 --- a/esphome/components/api/api_overflow_buffer.cpp +++ b/esphome/components/api/api_overflow_buffer.cpp @@ -31,7 +31,8 @@ ssize_t APIOverflowBuffer::try_drain(socket::Socket *socket) { // Entry fully sent — free it and advance Entry::destroy(front); this->queue_[this->head_] = nullptr; - this->head_ = (this->head_ + 1) % API_MAX_SEND_QUEUE; + if (++this->head_ >= API_MAX_SEND_QUEUE) + this->head_ = 0; this->count_--; } @@ -62,7 +63,8 @@ bool APIOverflowBuffer::enqueue_iov(const struct iovec *iov, int iovcnt, uint16_ } } - this->tail_ = (this->tail_ + 1) % API_MAX_SEND_QUEUE; + if (++this->tail_ >= API_MAX_SEND_QUEUE) + this->tail_ = 0; this->count_++; return true; }