Fix issues with Shape retention in Fixture:getShape()

This commit is contained in:
Bill Meltsner
2012-02-04 18:55:48 -05:00
parent e5cabe3b3f
commit 2a88ed1fa5
2 changed files with 6 additions and 2 deletions
+6 -1
View File
@@ -128,7 +128,12 @@ namespace box2d
return NULL; return NULL;
Shape * s = (Shape *)Memoizer::find(fixture->GetShape()); Shape * s = (Shape *)Memoizer::find(fixture->GetShape());
if (!s) if (!s)
s = new Shape(fixture->GetShape()); {
b2BlockAllocator a;
s = new Shape(fixture->GetShape()->Clone(&a));
}
else
s->retain();
return s; return s;
} }
@@ -121,7 +121,6 @@ namespace box2d
Shape * shape = t->getShape(); Shape * shape = t->getShape();
if (shape == 0) if (shape == 0)
return 0; return 0;
shape->retain();
switch (shape->getType()) { switch (shape->getType()) {
case Shape::SHAPE_EDGE: case Shape::SHAPE_EDGE:
luax_newtype(L, "EdgeShape", PHYSICS_EDGE_SHAPE_T, (void*)shape); luax_newtype(L, "EdgeShape", PHYSICS_EDGE_SHAPE_T, (void*)shape);