From: mfranz Date: Sat, 10 Jun 2006 22:21:22 +0000 (+0000) Subject: - remove listener in ~FGNasalListener(), not FGNasalSys::removelistener X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=00f3d1db80559043ae7ff3659ecf098855dc8d3f;p=flightgear.git - remove listener in ~FGNasalListener(), not FGNasalSys::removelistener - delete all listeners in ~FGNasalSys() --- diff --git a/src/Scripting/NasalSys.cxx b/src/Scripting/NasalSys.cxx index 9b9eb5a29..721614da7 100644 --- a/src/Scripting/NasalSys.cxx +++ b/src/Scripting/NasalSys.cxx @@ -60,6 +60,10 @@ FGNasalSys::FGNasalSys() FGNasalSys::~FGNasalSys() { + map::iterator it, end = _listener.end(); + for (it = _listener.begin(); it != end; ++it) + delete it->second; + // Nasal doesn't have a "destroy context" API yet. :( // Not a problem for a global subsystem that will never be // destroyed. And the context is actually a global, so no memory @@ -679,7 +683,6 @@ naRef FGNasalSys::removeListener(int argc, naRef* args) return naNil(); FGNasalListener *nl = _listener[i]; - nl->_node->removeChangeListener(nl); _listener.erase(i); delete nl; return naNum(_listener.size()); @@ -701,6 +704,7 @@ FGNasalListener::FGNasalListener(SGPropertyNode_ptr node, naRef handler, FGNasalListener::~FGNasalListener() { + _node->removeChangeListener(this); _nas->gcRelease(_gcKey); }