raidho36 8 years ago
parent
commit
e751278af1
1 changed files with 10 additions and 7 deletions
  1. 10 7
      src/modules/physics/box2d/World.cpp

+ 10 - 7
src/modules/physics/box2d/World.cpp

@@ -561,6 +561,16 @@ void World::destroy()
 		return;
 		return;
 	}
 	}
 
 
+	// Remove userdata reference to avoid it sticking around after GC
+	if (begin.ref)     begin.ref->unref();
+	if (end.ref)       end.ref->unref();
+	if (presolve.ref)  presolve.ref->unref();
+	if (postsolve.ref) postsolve.ref->unref();
+	if (filter.ref)    filter.ref->unref();
+
+	//disable callbacks
+	begin.ref = end.ref = presolve.ref = postsolve.ref = filter.ref = nullptr;
+
 	// Cleaning up the world.
 	// Cleaning up the world.
 	b2Body *b = world->GetBodyList();
 	b2Body *b = world->GetBodyList();
 	while (b)
 	while (b)
@@ -578,13 +588,6 @@ void World::destroy()
 	world->DestroyBody(groundBody);
 	world->DestroyBody(groundBody);
 	Memoizer::remove(world);
 	Memoizer::remove(world);
 
 
-	// Remove userdata reference to avoid it sticking around after GC
-	if (begin.ref)     begin.ref->unref();
-	if (end.ref)       end.ref->unref();
-	if (presolve.ref)  presolve.ref->unref();
-	if (postsolve.ref) postsolve.ref->unref();
-	if (filter.ref)    filter.ref->unref();
-
 	delete world;
 	delete world;
 	world = nullptr;
 	world = nullptr;
 }
 }