@@ -92,9 +92,6 @@ int16_t
9292 }
9393 if (esp_wifi_scan_start (&config, false ) == ESP_OK) {
9494 _scanStarted = millis ();
95- if (!_scanStarted) { // Prevent 0 from millis overflow
96- ++_scanStarted;
97- }
9895
9996 WiFiGenericClass::clearStatusBits (WIFI_SCAN_DONE_BIT);
10097 WiFiGenericClass::setStatusBits (WIFI_SCANNING_BIT);
@@ -118,21 +115,20 @@ int16_t
118115void WiFiScanClass::_scanDone () {
119116 esp_wifi_scan_get_ap_num (&(WiFiScanClass::_scanCount));
120117 if (WiFiScanClass::_scanResult) {
121- delete[] reinterpret_cast < wifi_ap_record_t *> (WiFiScanClass::_scanResult);
122- WiFiScanClass::_scanResult = nullptr ;
118+ free (WiFiScanClass::_scanResult);
119+ WiFiScanClass::_scanResult = NULL ;
123120 }
124121
125122 if (WiFiScanClass::_scanCount) {
126- WiFiScanClass::_scanResult = new (std::nothrow) wifi_ap_record_t [ WiFiScanClass::_scanCount] ;
123+ WiFiScanClass::_scanResult = calloc ( WiFiScanClass::_scanCount, sizeof ( wifi_ap_record_t )) ;
127124 if (!WiFiScanClass::_scanResult) {
128125 WiFiScanClass::_scanCount = 0 ;
129126 } else if (esp_wifi_scan_get_ap_records (&(WiFiScanClass::_scanCount), (wifi_ap_record_t *)_scanResult) != ESP_OK) {
130- delete[] reinterpret_cast < wifi_ap_record_t *> (WiFiScanClass::_scanResult);
131- WiFiScanClass::_scanResult = nullptr ;
127+ free (WiFiScanClass::_scanResult);
128+ WiFiScanClass::_scanResult = NULL ;
132129 WiFiScanClass::_scanCount = 0 ;
133130 }
134131 }
135- WiFiScanClass::_scanStarted = 0 ; // Reset after a scan is completed for normal behavior
136132 WiFiGenericClass::setStatusBits (WIFI_SCAN_DONE_BIT);
137133 WiFiGenericClass::clearStatusBits (WIFI_SCANNING_BIT);
138134}
@@ -161,15 +157,13 @@ int16_t WiFiScanClass::scanComplete() {
161157 }
162158
163159 if (WiFiGenericClass::getStatusBits () & WIFI_SCANNING_BIT) {
160+ // Check if the delay expired, return WIFI_SCAN_FAILED in this case
161+ if ((millis () - WiFiScanClass::_scanStarted) > WiFiScanClass::_scanTimeout) {
162+ WiFiGenericClass::clearStatusBits (WIFI_SCANNING_BIT);
163+ return WIFI_SCAN_FAILED;
164+ }
164165 return WIFI_SCAN_RUNNING;
165166 }
166- // last one to avoid time affecting Async mode
167- if (WiFiScanClass::_scanStarted
168- && (millis () - WiFiScanClass::_scanStarted)
169- > WiFiScanClass::_scanTimeout) { // Check is scan was started and if the delay expired, return WIFI_SCAN_FAILED in this case
170- WiFiGenericClass::clearStatusBits (WIFI_SCANNING_BIT);
171- return WIFI_SCAN_FAILED;
172- }
173167
174168 return WIFI_SCAN_FAILED;
175169}
@@ -179,11 +173,12 @@ int16_t WiFiScanClass::scanComplete() {
179173 */
180174void WiFiScanClass::scanDelete () {
181175 WiFiGenericClass::clearStatusBits (WIFI_SCAN_DONE_BIT);
176+ WiFiGenericClass::clearStatusBits (WIFI_SCANNING_BIT);
182177 if (WiFiScanClass::_scanResult) {
183- delete[] reinterpret_cast <wifi_ap_record_t *>(WiFiScanClass::_scanResult);
184- WiFiScanClass::_scanResult = nullptr ;
185- WiFiScanClass::_scanCount = 0 ;
178+ free (WiFiScanClass::_scanResult);
179+ WiFiScanClass::_scanResult = NULL ;
186180 }
181+ WiFiScanClass::_scanCount = 0 ;
187182}
188183
189184/* *
0 commit comments