Browse Source

Merge pull request #8014 from AlexHolly/fix-remove-and-skip

fix remove_and_skip()
Rémi Verschelde 8 years ago
parent
commit
5b6900ed9b
1 changed files with 8 additions and 7 deletions
  1. 8 7
      scene/main/node.cpp

+ 8 - 7
scene/main/node.cpp

@@ -2020,12 +2020,13 @@ void Node::remove_and_skip() {
 
 
 		bool clear = true;
 		bool clear = true;
 		for (int i = 0; i < data.children.size(); i++) {
 		for (int i = 0; i < data.children.size(); i++) {
-			if (!data.children[i]->get_owner())
+			Node *c_node = data.children[i];
+			if (!c_node->get_owner())
 				continue;
 				continue;
 
 
-			remove_child(data.children[i]);
-			data.children[i]->_propagate_replace_owner(this, NULL);
-			children.push_back(data.children[i]);
+			remove_child(c_node);
+			c_node->_propagate_replace_owner(this, NULL);
+			children.push_back(c_node);
 			clear = false;
 			clear = false;
 			break;
 			break;
 		}
 		}
@@ -2036,9 +2037,9 @@ void Node::remove_and_skip() {
 
 
 	while (!children.empty()) {
 	while (!children.empty()) {
 
 
-		Node *c = children.front()->get();
-		data.parent->add_child(c);
-		c->_propagate_replace_owner(NULL, new_owner);
+		Node *c_node = children.front()->get();
+		data.parent->add_child(c_node);
+		c_node->_propagate_replace_owner(NULL, new_owner);
 		children.pop_front();
 		children.pop_front();
 	}
 	}