@@ -128,7 +128,12 @@ namespace box2d
return NULL;
Shape * s = (Shape *)Memoizer::find(fixture->GetShape());
if (!s)
- s = new Shape(fixture->GetShape());
+ {
+ b2BlockAllocator a;
+ s = new Shape(fixture->GetShape()->Clone(&a));
+ }
+ else
+ s->retain();
return s;
}
@@ -121,7 +121,6 @@ namespace box2d
Shape * shape = t->getShape();
if (shape == 0)
return 0;
- shape->retain();
switch (shape->getType()) {
case Shape::SHAPE_EDGE:
luax_newtype(L, "EdgeShape", PHYSICS_EDGE_SHAPE_T, (void*)shape);