]> git.mxchange.org Git - simgear.git/commitdiff
- // This will come back and remove
authormfranz <mfranz>
Sun, 22 Oct 2006 13:08:09 +0000 (13:08 +0000)
committermfranz <mfranz>
Sun, 22 Oct 2006 13:08:09 +0000 (13:08 +0000)
- // the current item each time.  Is
- // that OK?

No, it is not OK. This messes up the vector and confuses the iterator.
And it leads to crashes. Better read the vector in reverse order.

simgear/props/props.cxx

index a04f90ca6d2504594b6eb3d51151e817af16dd24..3ce2687da62d906a14f56e7a877024c78765432e 100644 (file)
@@ -2286,12 +2286,8 @@ SGPropertyNode::hash_table::hashcode (const char * key)
 
 SGPropertyChangeListener::~SGPropertyChangeListener ()
 {
-                               // This will come back and remove
-                               // the current item each time.  Is
-                               // that OK?
-  vector<SGPropertyNode *>::iterator it;
-  for (it = _properties.begin(); it != _properties.end(); it++)
-    (*it)->removeChangeListener(this);
+  for (int i = _properties.size() - 1; i >= 0; i--)
+    _properties[i]->removeChangeListener(this);
 }
 
 void