From 7490efedd7710cb826c933ac1863972863c13e13 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 9 Feb 2026 09:24:15 -0600 Subject: [PATCH 1/4] Remove redundant early guard --- esphome/components/ld2450/ld2450.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/esphome/components/ld2450/ld2450.cpp b/esphome/components/ld2450/ld2450.cpp index 7a203f42409..38ba0d7f96b 100644 --- a/esphome/components/ld2450/ld2450.cpp +++ b/esphome/components/ld2450/ld2450.cpp @@ -276,14 +276,8 @@ void LD2450Component::dump_config() { } void LD2450Component::loop() { - // 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[MAX_LINE_LENGTH]; while (avail > 0) { size_t to_read = std::min(static_cast(avail), sizeof(buf)); From 4827f53156452efdcdc89db6761c767331e1af45 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 9 Feb 2026 09:26:13 -0600 Subject: [PATCH 2/4] Keep early guard to avoid stack buffer allocation --- esphome/components/ld2450/ld2450.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/esphome/components/ld2450/ld2450.cpp b/esphome/components/ld2450/ld2450.cpp index 38ba0d7f96b..715cf0823b0 100644 --- a/esphome/components/ld2450/ld2450.cpp +++ b/esphome/components/ld2450/ld2450.cpp @@ -276,8 +276,12 @@ void LD2450Component::dump_config() { } void LD2450Component::loop() { - // 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[MAX_LINE_LENGTH]; while (avail > 0) { size_t to_read = std::min(static_cast(avail), sizeof(buf)); From a9c37cae26af409be006bd54b85cd4de22f8a92e Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 9 Feb 2026 09:28:32 -0600 Subject: [PATCH 3/4] Add comment explaining early guard --- esphome/components/ld2450/ld2450.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/esphome/components/ld2450/ld2450.cpp b/esphome/components/ld2450/ld2450.cpp index 715cf0823b0..eeb2d481ef7 100644 --- a/esphome/components/ld2450/ld2450.cpp +++ b/esphome/components/ld2450/ld2450.cpp @@ -276,6 +276,8 @@ void LD2450Component::dump_config() { } void LD2450Component::loop() { + // 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 08cca414e7be72d8cb6cdb70f94e1ef88954f17f Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 9 Feb 2026 09:37:53 -0600 Subject: [PATCH 4/4] Remove unnecessary early guard --- esphome/components/ld2450/ld2450.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/esphome/components/ld2450/ld2450.cpp b/esphome/components/ld2450/ld2450.cpp index eeb2d481ef7..38ba0d7f96b 100644 --- a/esphome/components/ld2450/ld2450.cpp +++ b/esphome/components/ld2450/ld2450.cpp @@ -276,14 +276,8 @@ void LD2450Component::dump_config() { } void LD2450Component::loop() { - // 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[MAX_LINE_LENGTH]; while (avail > 0) { size_t to_read = std::min(static_cast(avail), sizeof(buf));