X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fstructure%2Fsubsystem_mgr.cxx;h=ee9c15d1750dab1ab90d5e02b1612f1a4712fa1d;hb=4e46bb667179cd45cfb2f9934734ceddd1ea01b4;hp=0ed6b43623913bb6d72dd3193805526f82123f4e;hpb=7e7d877874fcd67cad0152bd1a2a073e0337235f;p=simgear.git diff --git a/simgear/structure/subsystem_mgr.cxx b/simgear/structure/subsystem_mgr.cxx index 0ed6b436..ee9c15d1 100644 --- a/simgear/structure/subsystem_mgr.cxx +++ b/simgear/structure/subsystem_mgr.cxx @@ -110,10 +110,11 @@ SGSubsystemGroup::SGSubsystemGroup () SGSubsystemGroup::~SGSubsystemGroup () { - for (unsigned int i = 0; i < _members.size(); i++) + // reverse order to prevent order dependency problems + for (unsigned int i = _members.size(); i > 0; i--) { - _members[i]->printTimingStatistics(); - delete _members[i]; + _members[i-1]->printTimingStatistics(); + delete _members[i-1]; } } @@ -148,8 +149,9 @@ SGSubsystemGroup::bind () void SGSubsystemGroup::unbind () { - for (unsigned int i = 0; i < _members.size(); i++) - _members[i]->subsystem->unbind(); + // reverse order to prevent order dependency problems + for (unsigned int i = _members.size(); i > 0; i--) + _members[i-1]->subsystem->unbind(); } void @@ -381,7 +383,8 @@ SGSubsystemMgr::bind () void SGSubsystemMgr::unbind () { - for (int i = 0; i < MAX_GROUPS; i++) + // reverse order to prevent order dependency problems + for (int i = MAX_GROUPS-1; i >= 0; i--) _groups[i].unbind(); }