From 205495a88c56b6bb3d1a7fba7c23fcc12a5f51d3 Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower, III" Date: Sat, 7 Jan 2023 08:08:57 -0800 Subject: [PATCH] Remove 400b stack allocation from AdvWeb example The AdvancedWebServer.ino example allocated a 400 byte char array on the stack which, in the case of the example, will work but in general is a dangerous thing to show new users to try. Instead, use a StreamString to generate the string on the heap. --- .../AdvancedWebServer/AdvancedWebServer.ino | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/libraries/ESP8266WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino b/libraries/ESP8266WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino index 36511917db..b96f977373 100644 --- a/libraries/ESP8266WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino +++ b/libraries/ESP8266WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino @@ -32,6 +32,7 @@ #include #include #include +#include #ifndef STASSID #define STASSID "your-ssid" @@ -47,14 +48,14 @@ const int led = 13; void handleRoot() { digitalWrite(led, 1); - char temp[400]; int sec = millis() / 1000; int min = sec / 60; int hr = min / 60; - snprintf(temp, 400, - - "\ + StreamString temp; + temp.reserve(500); // Preallocate a large chunk to avoid memory fragmentation + temp.printf("\ +\ \ \ ESP8266 Demo\ @@ -68,9 +69,8 @@ void handleRoot() { \ \ ", - - hr, min % 60, sec % 60); - server.send(200, "text/html", temp); + hr, min % 60, sec % 60); + server.send(200, "text/html", temp.c_str()); digitalWrite(led, 0); }