From 8dff0ee449cb055782da3a9a67d1d569164c2bc5 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 9 Feb 2026 09:25:23 -0600 Subject: [PATCH 1/4] Remove redundant early guard --- esphome/components/nextion/nextion.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/esphome/components/nextion/nextion.cpp b/esphome/components/nextion/nextion.cpp index aa01914729..56bbc840fb 100644 --- a/esphome/components/nextion/nextion.cpp +++ b/esphome/components/nextion/nextion.cpp @@ -397,14 +397,8 @@ bool Nextion::remove_from_q_(bool report_empty) { } void Nextion::process_serial_() { - // All current UART available() implementations return >= 0, - // use <= 0 to future-proof against any that may return negative on error. - int avail = this->available(); - if (avail <= 0) { - return; - } - // Read all available bytes in batches to reduce UART call overhead. + int avail = this->available(); uint8_t buf[64]; while (avail > 0) { size_t to_read = std::min(static_cast(avail), sizeof(buf)); From 457d68256d8bf322a5736b3bc891fb6befdc1cbc Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 9 Feb 2026 09:27:20 -0600 Subject: [PATCH 2/4] Keep early guard to avoid stack buffer allocation --- esphome/components/nextion/nextion.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/esphome/components/nextion/nextion.cpp b/esphome/components/nextion/nextion.cpp index 56bbc840fb..74e453e028 100644 --- a/esphome/components/nextion/nextion.cpp +++ b/esphome/components/nextion/nextion.cpp @@ -397,8 +397,12 @@ bool Nextion::remove_from_q_(bool report_empty) { } void Nextion::process_serial_() { - // Read all available bytes in batches to reduce UART call overhead. int avail = this->available(); + if (avail <= 0) { + return; + } + + // Read all available bytes in batches to reduce UART call overhead. uint8_t buf[64]; while (avail > 0) { size_t to_read = std::min(static_cast(avail), sizeof(buf)); From cc1f83ac355bebd304b848948dfe1b8ed95597aa Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 9 Feb 2026 09:29:42 -0600 Subject: [PATCH 3/4] Add comment explaining early guard --- esphome/components/nextion/nextion.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/esphome/components/nextion/nextion.cpp b/esphome/components/nextion/nextion.cpp index 74e453e028..08ce22c99f 100644 --- a/esphome/components/nextion/nextion.cpp +++ b/esphome/components/nextion/nextion.cpp @@ -397,6 +397,8 @@ bool Nextion::remove_from_q_(bool report_empty) { } void Nextion::process_serial_() { + // Early return avoids stack adjustment for the batch buffer below. + // loop() runs ~7000/min so most calls have nothing to read. int avail = this->available(); if (avail <= 0) { return; From 9c9e8ac38865c6b9e0d09fb6f309f3da3ea11d09 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 9 Feb 2026 09:39:04 -0600 Subject: [PATCH 4/4] Remove unnecessary early guard --- esphome/components/nextion/nextion.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/esphome/components/nextion/nextion.cpp b/esphome/components/nextion/nextion.cpp index 08ce22c99f..56bbc840fb 100644 --- a/esphome/components/nextion/nextion.cpp +++ b/esphome/components/nextion/nextion.cpp @@ -397,14 +397,8 @@ bool Nextion::remove_from_q_(bool report_empty) { } void Nextion::process_serial_() { - // Early return avoids stack adjustment for the batch buffer below. - // loop() runs ~7000/min so most calls have nothing to read. - int avail = this->available(); - if (avail <= 0) { - return; - } - // Read all available bytes in batches to reduce UART call overhead. + int avail = this->available(); uint8_t buf[64]; while (avail > 0) { size_t to_read = std::min(static_cast(avail), sizeof(buf));