Corrige une fuite mémoire dans La Corne d'Abondance (page blanche sur iPhone après plusieurs minutes)
Build and deploy / deploy (push) Successful in 36s

À chaque fusion, les id matter-js des deux pièces étaient ajoutés à un Set pour empêcher une double fusion sur la même frame, mais jamais retirés pendant la partie — seulement vidés au redémarrage complet. Sur une longue partie avec beaucoup de fusions, ce Set grossissait sans jamais être nettoyé, contribuant à faire grimper la mémoire jusqu'à ce que Safari/iOS recharge la page de force. Les id sont maintenant retirés dès qu'une fusion est traitée.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Valentin ROBIN
2026-08-26 18:42:58 +02:00
parent 4f920175fd
commit 058b1ec140
+9
View File
@@ -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) {