With shape outside on floats (bug 100398) it's become necessary to store shape info for both shape outside and shape inside. Some suggestions for the patch: computeShapeSize & m_shape can be lazily evaluated to avoid the m_shape asserts. Names should be shorter, where possible. The map add currently allocates a block every time when it doesn't need to. The shape removal code may fail because a style has already been changed. Remove the test to make sure the shape is always removed.
This was already fixed as part of the work on bug 100766. *** This bug has been marked as a duplicate of bug 100766 ***