[web_server_idf] Use make_unique_for_overwrite for recv buffer

The multipart receive buffer is immediately written by httpd_req_recv()
before any read occurs, and only recv_len bytes (the amount actually
received) are subsequently passed to the parser. Zero-initialization
via make_unique is therefore unnecessary overhead.

Switch to C++20 make_unique_for_overwrite which skips value-initialization
for POD types, avoiding a redundant memset of the 1460-byte buffer on
every multipart upload request.
This commit is contained in:
J. Nick Koston
2026-02-25 09:56:37 -07:00
parent 1beeb9ab5c
commit 371e9a9870

View File

@@ -921,7 +921,7 @@ esp_err_t AsyncWebServer::handle_multipart_upload_(httpd_req_t *r, const char *c
});
// Use heap buffer - 1460 bytes is too large for the httpd task stack
auto buffer = std::make_unique<char[]>(MULTIPART_CHUNK_SIZE);
auto buffer = std::make_unique_for_overwrite<char[]>(MULTIPART_CHUNK_SIZE);
size_t bytes_since_yield = 0;
for (size_t remaining = r->content_len; remaining > 0;) {