From 760f8220faaba12d8d6f51140c7334fcc03149b2 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Tue, 10 Dec 2013 03:54:56 -0400 Subject: [PATCH] Fixed a small memory leak if love.physics.newChainShape errors --- src/modules/physics/box2d/Physics.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/modules/physics/box2d/Physics.cpp b/src/modules/physics/box2d/Physics.cpp index 24830e686..1c6fb4c6a 100644 --- a/src/modules/physics/box2d/Physics.cpp +++ b/src/modules/physics/box2d/Physics.cpp @@ -149,16 +149,24 @@ int Physics::newChainShape(lua_State *L) 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; - 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; }