From 12b5f4966b6a95fa02d19e2e6644abf9df24e597 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Villac=C3=ADs=20Lasso?= Date: Wed, 30 Dec 2020 16:02:46 -0500 Subject: [PATCH] Replace one use of LinkedList with std::vector for web request path params Fraction of commit 9b98550f64000b937db9567b69e1275feccf1f0f of dumbfixes branch of 0xFEEDC0DE64 fork of ESPAsyncWebServer. Split off for clarity. --- src/ESPAsyncWebServer.h | 2 +- src/WebRequest.cpp | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/ESPAsyncWebServer.h b/src/ESPAsyncWebServer.h index 0425159..4497c9a 100644 --- a/src/ESPAsyncWebServer.h +++ b/src/ESPAsyncWebServer.h @@ -184,7 +184,7 @@ class AsyncWebServerRequest { std::list _headers; LinkedList _params; - LinkedList _pathParams; + std::vector _pathParams; uint8_t _multiParseState; uint8_t _boundaryPosition; diff --git a/src/WebRequest.cpp b/src/WebRequest.cpp index 3594fb5..31613df 100644 --- a/src/WebRequest.cpp +++ b/src/WebRequest.cpp @@ -52,7 +52,6 @@ AsyncWebServerRequest::AsyncWebServerRequest(AsyncWebServer* s, AsyncClient* c) , _contentLength(0) , _parsedLength(0) , _params(LinkedList([](AsyncWebParameter *p){ delete p; })) - , _pathParams(LinkedList([](String *p){ delete p; })) , _multiParseState(0) , _boundaryPosition(0) , _itemStartIndex(0) @@ -78,7 +77,7 @@ AsyncWebServerRequest::~AsyncWebServerRequest(){ _headers.clear(); _params.free(); - _pathParams.free(); + _pathParams.clear(); _interestingHeaders.clear(); @@ -254,7 +253,7 @@ void AsyncWebServerRequest::_addParam(AsyncWebParameter *p){ } void AsyncWebServerRequest::_addPathParam(const char *p){ - _pathParams.add(new String(p)); + _pathParams.emplace_back(p); } void AsyncWebServerRequest::_addGetParams(const String& params){ @@ -915,8 +914,7 @@ const String& AsyncWebServerRequest::argName(size_t i) const { } const String& AsyncWebServerRequest::pathArg(size_t i) const { - auto param = _pathParams.nth(i); - return param ? **param : emptyString; + return i < _pathParams.size() ? _pathParams[i] : emptyString; } const String& AsyncWebServerRequest::header(const char* name) const {