mirror of
https://github.com/alexhopeoconnor/WiFiManager.git
synced 2026-10-18 00:41:43 +10:00
Release WiFiManager 3.0.0
This commit is contained in:
@@ -34,7 +34,9 @@ class WiFiManagerParameter {
|
||||
WiFiManagerParameter(const char *id, const char *label, const char *defaultValue, int length, const char *custom);
|
||||
WiFiManagerParameter(const char *id, const char *label, const char *defaultValue, int length, const char *custom, int labelPlacement);
|
||||
virtual ~WiFiManagerParameter();
|
||||
// WiFiManagerParameter& operator=(const WiFiManagerParameter& rhs);
|
||||
|
||||
WiFiManagerParameter(const WiFiManagerParameter&) = delete;
|
||||
WiFiManagerParameter& operator=(const WiFiManagerParameter&) = delete;
|
||||
|
||||
const char *getID() const;
|
||||
const char *getValue() const;
|
||||
@@ -48,7 +50,6 @@ class WiFiManagerParameter {
|
||||
protected:
|
||||
void init(const char *id, const char *label, const char *defaultValue, int length, const char *custom, int labelPlacement);
|
||||
|
||||
WiFiManagerParameter& operator=(const WiFiManagerParameter&);
|
||||
const char *_id;
|
||||
const char *_label;
|
||||
char *_value;
|
||||
|
||||
@@ -63,6 +63,9 @@ bool normalizeHostname(String& hostname) {
|
||||
* @return true if added successfully, false on error
|
||||
*/
|
||||
bool WiFiManager::portalAddParameter(WiFiManagerParameter *p) {
|
||||
if (!p) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// check param id is valid, unless null
|
||||
if(p->getID()){
|
||||
@@ -82,18 +85,25 @@ bool WiFiManager::portalAddParameter(WiFiManagerParameter *p) {
|
||||
log(WiFiManagerLogLevel::Trace, kWiFiMgrLogSubsystem,F("allocating params bytes:"),_max_params * sizeof(WiFiManagerParameter*));
|
||||
#endif
|
||||
_params = (WiFiManagerParameter**)malloc(_max_params * sizeof(WiFiManagerParameter*));
|
||||
if (_params == NULL) {
|
||||
#ifndef WM_NO_LOG
|
||||
log(WiFiManagerLogLevel::Error, kWiFiMgrLogSubsystem,F("[ERROR] failed to allocate params"));
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// resize the params array by increment of WIFI_MANAGER_MAX_PARAMS
|
||||
// Resize only after a successful allocation so _max_params always matches storage.
|
||||
if(_paramsCount == _max_params){
|
||||
_max_params += WIFI_MANAGER_MAX_PARAMS;
|
||||
const size_t expandedMaxParams = _max_params + WIFI_MANAGER_MAX_PARAMS;
|
||||
#ifndef WM_NO_LOG
|
||||
log(WiFiManagerLogLevel::Trace, kWiFiMgrLogSubsystem,F("Updated _max_params:"),_max_params);
|
||||
log(WiFiManagerLogLevel::Trace, kWiFiMgrLogSubsystem,F("re-allocating params bytes:"),_max_params * sizeof(WiFiManagerParameter*));
|
||||
log(WiFiManagerLogLevel::Trace, kWiFiMgrLogSubsystem,F("Updated _max_params:"),expandedMaxParams);
|
||||
log(WiFiManagerLogLevel::Trace, kWiFiMgrLogSubsystem,F("re-allocating params bytes:"),expandedMaxParams * sizeof(WiFiManagerParameter*));
|
||||
#endif
|
||||
WiFiManagerParameter** new_params = (WiFiManagerParameter**)realloc(_params, _max_params * sizeof(WiFiManagerParameter*));
|
||||
WiFiManagerParameter** new_params = (WiFiManagerParameter**)realloc(_params, expandedMaxParams * sizeof(WiFiManagerParameter*));
|
||||
if (new_params != NULL) {
|
||||
_params = new_params;
|
||||
_max_params = expandedMaxParams;
|
||||
} else {
|
||||
#ifndef WM_NO_LOG
|
||||
log(WiFiManagerLogLevel::Error, kWiFiMgrLogSubsystem,F("[ERROR] failed to realloc params, size not increased!"));
|
||||
|
||||
@@ -8,9 +8,11 @@
|
||||
#include "WiFiManagerParameter.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <new>
|
||||
|
||||
WiFiManagerParameter::WiFiManagerParameter() {
|
||||
WiFiManagerParameter("");
|
||||
WiFiManagerParameter::WiFiManagerParameter()
|
||||
: WiFiManagerParameter("")
|
||||
{
|
||||
}
|
||||
|
||||
WiFiManagerParameter::WiFiManagerParameter(const char *custom) {
|
||||
@@ -63,27 +65,24 @@ WiFiManagerParameter::~WiFiManagerParameter() {
|
||||
|
||||
// @note debug is not available in wmparameter class
|
||||
void WiFiManagerParameter::setValue(const char *defaultValue, int length) {
|
||||
if(!_id){
|
||||
// Serial.println("cannot set value of this parameter");
|
||||
if (!_id || length < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// if(strlen(defaultValue) > length){
|
||||
// // Serial.println("defaultValue length mismatch");
|
||||
// // return false; //@todo bail
|
||||
// }
|
||||
|
||||
if(_length != length || _value == nullptr){
|
||||
_length = length;
|
||||
if( _value != nullptr){
|
||||
delete[] _value;
|
||||
if (_length != length || _value == nullptr) {
|
||||
char* replacement = new (std::nothrow) char[static_cast<size_t>(length) + 1];
|
||||
if (!replacement) {
|
||||
return;
|
||||
}
|
||||
_value = new char[_length + 1];
|
||||
|
||||
delete[] _value;
|
||||
_value = replacement;
|
||||
_length = length;
|
||||
}
|
||||
|
||||
memset(_value, 0, _length + 1); // explicit null
|
||||
memset(_value, 0, static_cast<size_t>(_length) + 1);
|
||||
|
||||
if (defaultValue != NULL) {
|
||||
if (defaultValue != nullptr) {
|
||||
strncpy(_value, defaultValue, _length);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user