[Positioning] Fix ReferencePoint::delete_generated_requests()
Use a while loop instead of for to check the requests.
This commit is contained in:
parent
232551c150
commit
2b12e49374
|
@ -136,35 +136,35 @@ void ReferencePoint::delete_requests()
|
|||
*/
|
||||
bool ReferencePoint::delete_generated_requests(void)
|
||||
{
|
||||
bool modified = false ;
|
||||
|
||||
for (vector<CalibrationRequest*>::iterator r = requests.begin() ;
|
||||
r != requests.end() ; ++r)
|
||||
unsigned int nb_requests = requests.size() ;
|
||||
vector<CalibrationRequest*>::iterator r = requests.begin() ;
|
||||
while (r != requests.end())
|
||||
{
|
||||
assert(*r) ;
|
||||
if ((*r)->get_mobile() == NULL)
|
||||
{
|
||||
requests.erase(r) ;
|
||||
modified = true ;
|
||||
continue ;
|
||||
}
|
||||
|
||||
unordered_map<std::string, AccessPoint>::const_iterator ap ;
|
||||
|
||||
if ((*r)->get_mobile() == NULL)
|
||||
goto delete_request ;
|
||||
|
||||
for (ap = Stock::get_aps().begin() ; ap != Stock::get_aps().end() ;
|
||||
++ap)
|
||||
if ((*r)->get_mobile()->get_mac_addr() ==
|
||||
ap->second.get_mac_addr())
|
||||
break ;
|
||||
|
||||
if (ap == Stock::get_aps().end()) // r is not associated with an AP
|
||||
if (ap != Stock::get_aps().end()) // r still associated with an AP
|
||||
{
|
||||
Stock::delete_calibration_request(**r) ;
|
||||
requests.erase(r) ;
|
||||
modified = true ;
|
||||
++r ;
|
||||
continue ; // Do not delete r
|
||||
}
|
||||
|
||||
// r is not assotiated with an AP, delete it
|
||||
delete_request:
|
||||
Stock::delete_calibration_request(**r) ;
|
||||
r = requests.erase(r) ;
|
||||
}
|
||||
|
||||
return modified ;
|
||||
return nb_requests != requests.size() ;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue