From 00f3d1db80559043ae7ff3659ecf098855dc8d3f Mon Sep 17 00:00:00 2001 From: mfranz Date: Sat, 10 Jun 2006 22:21:22 +0000 Subject: [PATCH] - remove listener in ~FGNasalListener(), not FGNasalSys::removelistener - delete all listeners in ~FGNasalSys() --- src/Scripting/NasalSys.cxx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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); } -- 2.39.5