X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fstructure%2Fsubsystem_mgr.cxx;h=ee9c15d1750dab1ab90d5e02b1612f1a4712fa1d;hb=4e46bb667179cd45cfb2f9934734ceddd1ea01b4;hp=1385d8eab493a5181e2b94f837be431bfeb22eb4;hpb=7e7ce2f38e87d6244e05730fa4382da088bb25f1;p=simgear.git diff --git a/simgear/structure/subsystem_mgr.cxx b/simgear/structure/subsystem_mgr.cxx index 1385d8ea..ee9c15d1 100644 --- a/simgear/structure/subsystem_mgr.cxx +++ b/simgear/structure/subsystem_mgr.cxx @@ -5,6 +5,8 @@ #include "exception.hxx" #include "subsystem_mgr.hxx" +#include + //////////////////////////////////////////////////////////////////////// @@ -108,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]; } } @@ -146,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 @@ -379,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(); }