Skip to content

fix(physics): update local body variable after creating MatterTileBody#7273

Open
cyphercodes wants to merge 1 commit intophaserjs:masterfrom
cyphercodes:master
Open

fix(physics): update local body variable after creating MatterTileBody#7273
cyphercodes wants to merge 1 commit intophaserjs:masterfrom
cyphercodes:master

Conversation

@cyphercodes
Copy link
Copy Markdown

@cyphercodes cyphercodes commented Apr 5, 2026

Description

Fixes a scope bug in MatterTileBody where the local 'body' variable remained null after creating the body via setFromTileCollision() or setFromTileRectangle(). This caused a crash when processing flipped tiles because Body.scale() was called with null.

Bug

When Matter.World.convertTilemapLayer() processes a tile that has flipX or flipY set, it crashes with:

Root Cause

The constructor declares a local body variable initialised to null, then creates the actual body via setFromTileCollision() or setFromTileRectangle() — both of which set this.body but never update the local body variable. Immediately after, the flip check reads from the stale local.

Fix

Add one line to update the local body variable after the body is created:

Fixes #7267


Note

Low Risk
Low risk, single-line fix in MatterTileBody constructor to prevent null body usage when scaling flipped tiles.

Overview
Fixes a constructor scoping bug in MatterTileBody where the local body variable could remain null after creating a body from tile collision shapes or a tile rectangle.

After generating the body via setFromTileCollision() / setFromTileRectangle(), it now reassigns body = this.body so the subsequent flip handling (Body.scale for flipX/flipY) operates on the created body instead of crashing.

Reviewed by Cursor Bugbot for commit 415a5fc. Bugbot is set up for automated code reviews on this repo. Configure here.

Fixes a scope bug where the local 'body' variable remained null after
creating the body via setFromTileCollision() or setFromTileRectangle().
This caused a crash when processing flipped tiles because Body.scale()
was called with null.

Fixes phaserjs#7267
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

MatterTileBody crashes with "Cannot read properties of null (reading 'inertia')" on flipped tiles with collision shapes

1 participant