diff --git a/src/app/corne/melon-game.tsx b/src/app/corne/melon-game.tsx index 00b1b40..38f2d15 100644 --- a/src/app/corne/melon-game.tsx +++ b/src/app/corne/melon-game.tsx @@ -325,6 +325,15 @@ export function MelonGame({ bodiesRef.current.delete(merge.pieceIdB); nodeRefs.current.delete(merge.pieceIdA); nodeRefs.current.delete(merge.pieceIdB); + // Fuite mémoire corrigée ici : ces deux identifiants (les vrais id + // matter-js, pas les pieceId de l'app) étaient ajoutés à chaque + // fusion détectée dans collisionStart mais jamais retirés pendant + // la partie — seulement vidés au redémarrage complet du jeu. Sur + // une longue partie avec beaucoup de fusions, ce Set grossissait + // sans jamais être nettoyé (constaté en prod sur iPhone : page + // blanche puis rechargement après plusieurs minutes de jeu). + mergingBodyIdsRef.current.delete(bodyA.id); + mergingBodyIdsRef.current.delete(bodyB.id); removedIds.push(merge.pieceIdA, merge.pieceIdB); if (merge.tier < maxTier) {