System hang
avaer opened this issue · comments
Avaer Kazmer commented
This repro will completely hang the library until it crashes:
const maxRectsPacker = new MaxRectsPacker(512, 512, {
padding: 1,
// exclusiveTag: false,
});
const rects2 = [
{
width: 512,
height: 512,
},
{
width: 512,
height: 512,
},
];
for (const rect of rects2) {
maxRectsPacker.add(rect);
}
As far as I understand, this should set oversized flags but bail out. Instead it just loops forever doing some sort of placement/freeing procedure.
This makes the library dangerous to use in any situation where the input sizes can be user-controlled, since it risks total application hang.
If you pause you can get a sense of the infinite loop.
Avaer Kazmer commented
Might be related to #28.
Tested on 2.7.3