mirror of
https://github.com/esphome/esphome.git
synced 2026-02-24 10:18:23 -07:00
ProtoSize::calculate_size() already computes the exact encoded size before encode() runs and is the boundary validation. The buffer is pre-sized to match. Since the buffer size is always correct, push_back() capacity checks on every byte are redundant overhead. Rename ProtoWriteBuffer to ProtoWritePreSizedBuffer to document the contract. Write through a raw uint8_t* pointer instead of push_back(). Pre-resize the buffer to include payload space before encoding. Add ESPHOME_DEBUG_API bounds checks to validate writes stay within the pre-sized region during development and integration testing.