File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -1603,15 +1603,19 @@ void NodeDB::resetNodes(bool keepFavorites)
16031603 numMeshNodes = 1 ;
16041604 if (keepFavorites) {
16051605 LOG_INFO (" Clearing node database - preserving favorites" );
1606- for (size_t i = 0 ; i < meshNodes->size (); i++) {
1606+ // Compact favorites into contiguous low slots: zeroing in place leaves one above
1607+ // numMeshNodes, invisible to every `i < numMeshNodes` scan yet still serialized to flash.
1608+ for (size_t i = 1 ; i < meshNodes->size (); i++) {
16071609 meshtastic_NodeInfoLite &node = meshNodes->at (i);
1608- if (i > 0 && !nodeInfoLiteIsFavorite (&node)) {
1609- eraseNodeSatellites (node.num );
1610- node = meshtastic_NodeInfoLite ();
1611- } else {
1610+ if (nodeInfoLiteIsFavorite (&node)) {
1611+ if (numMeshNodes != i)
1612+ meshNodes->at (numMeshNodes) = node;
16121613 numMeshNodes += 1 ;
1614+ } else if (node.num ) {
1615+ eraseNodeSatellites (node.num );
16131616 }
1614- };
1617+ }
1618+ std::fill (nodeDatabase.nodes .begin () + numMeshNodes, nodeDatabase.nodes .end (), meshtastic_NodeInfoLite ());
16151619 } else {
16161620 LOG_INFO (" Clearing node database - removing favorites" );
16171621 for (size_t i = 1 ; i < meshNodes->size (); i++) {
You can’t perform that action at this time.
0 commit comments