From ee543a834de0232cf9d7d076054481b607fac074 Mon Sep 17 00:00:00 2001
From: Tazpn <tazpn@users.sourceforge.net>
Date: Sat, 10 Jun 2006 19:34:50 +0000
Subject: [PATCH] Fix iterator issue with NiNode when clearing children and
 Clearing issue with NiObjectNET and controllers.

---
 obj/NiNode.cpp      | 2 +-
 obj/NiObjectNET.cpp | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/obj/NiNode.cpp b/obj/NiNode.cpp
index a62b59b1..947040a8 100644
--- a/obj/NiNode.cpp
+++ b/obj/NiNode.cpp
@@ -69,7 +69,7 @@ void NiNode::RemoveChild( Ref<NiAVObject> obj ) {
 }
 
 void NiNode::ClearChildren() {
-	for ( vector< NiAVObjectRef >::iterator it = children.begin(); it != children.end(); ) {
+	for ( vector< NiAVObjectRef >::iterator it = children.begin(); it != children.end(); ++it) {
 		(*it)->SetParent(NULL);
 	}
 	children.clear();
diff --git a/obj/NiObjectNET.cpp b/obj/NiObjectNET.cpp
index 7efe516f..0a47411b 100644
--- a/obj/NiObjectNET.cpp
+++ b/obj/NiObjectNET.cpp
@@ -152,11 +152,11 @@ void NiObjectNET::RemoveController( Ref<NiTimeController> obj ) {
 	}
 }
 void NiObjectNET::ClearControllers() {
-	NiTimeControllerRef cont = controller;
-	while ( cont != NULL ) {
-		cont->SetTarget(NULL);
+	NiTimeControllerRef * cont = &controller;
+	while ( (*cont) != NULL ) {
+	   (*cont)->SetTarget(NULL);
+      (*cont) = (*cont)->GetNextController();
 	}
-	controller = NULL;
 }
 
 list< Ref<NiTimeController> > NiObjectNET::GetControllers() const {
-- 
GitLab