- for(set<Block *>::iterator i=blocks.begin(); i!=blocks.end();)
- {
- bool del = (*i)->has_track(track);
- for(vector<Track *>::const_iterator j=links.begin(); (!del && j!=links.end()); ++j)
- del = (*i)->has_track(**j);
-
- if(del)
- delete *i++;
- else
- ++i;
- }
+ for(vector<Track *>::const_iterator i=links.begin(); i!=links.end(); ++i)
+ if(*i)
+ del_blocks.insert(&(*i)->get_block());
+
+ for(set<Block *>::iterator i=del_blocks.begin(); i!=del_blocks.end(); ++i)
+ delete *i;