Преглед на файлове

Fixed a small memory leak if love.physics.newChainShape errors

Alex Szpakowski преди 11 години
родител
ревизия
760f8220fa
променени са 1 файла, в които са добавени 14 реда и са изтрити 6 реда
  1. 14 6
      src/modules/physics/box2d/Physics.cpp

+ 14 - 6
src/modules/physics/box2d/Physics.cpp

@@ -149,16 +149,24 @@ int Physics::newChainShape(lua_State *L)
 		lua_pop(L, 2);
 		lua_pop(L, 2);
 	}
 	}
 
 
-	if (loop)
-		s->CreateLoop(vecs, vcount);
-	else
-		s->CreateChain(vecs, vcount);
+	try
+	{
+		if (loop)
+			s->CreateLoop(vecs, vcount);
+		else
+			s->CreateChain(vecs, vcount);
+	}
+	catch (love::Exception &)
+	{
+		delete[] vecs;
+		throw;
+	}
 
 
-	ChainShape *c = new ChainShape(s);
 	delete[] vecs;
 	delete[] vecs;
 
 
-	luax_pushtype(L, "ChainShape", PHYSICS_CHAIN_SHAPE_T, c);
+	ChainShape *c = new ChainShape(s);
 
 
+	luax_pushtype(L, "ChainShape", PHYSICS_CHAIN_SHAPE_T, c);
 	return 1;
 	return 1;
 }
 }