mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-02 12:36:39 +01:00
cd4ed228f2
## About The Pull Request Fixes #74697 Look at this for loop https://github.com/tgstation/tgstation/blob/bfba2c59340a5cb2e5fe9eb4705a0c3ff5d6f407/code/controllers/subsystem/lighting.dm#L34-L39 Now look at update corners https://github.com/tgstation/tgstation/blob/bfba2c59340a5cb2e5fe9eb4705a0c3ff5d6f407/code/modules/lighting/lighting_source.dm#L428-L430 Now look at refresh values. this proc has a chance to delete itself here https://github.com/tgstation/tgstation/blob/bfba2c59340a5cb2e5fe9eb4705a0c3ff5d6f407/code/modules/lighting/lighting_source.dm#L315-L318 And here https://github.com/tgstation/tgstation/blob/bfba2c59340a5cb2e5fe9eb4705a0c3ff5d6f407/code/modules/lighting/lighting_source.dm#L331-L334 Now look at the Destroy proc, specifically focus on the needs_update condition https://github.com/tgstation/tgstation/blob/bfba2c59340a5cb2e5fe9eb4705a0c3ff5d6f407/code/modules/lighting/lighting_source.dm#L66-L67 We are removing the light from the subsystem source queue while the subsystem is still iterating through them causing big problems for this for loop https://github.com/tgstation/tgstation/blob/bfba2c59340a5cb2e5fe9eb4705a0c3ff5d6f407/code/controllers/subsystem/lighting.dm#L33-L37 which causes the out of bounds exception because loop variable `i` is not updated accordingly when this list size is reduced mid iteration. The solution? we have to move the loop variable `i` back whenever the source is deleted i.e. removed from the list so we don't overflow ## Changelog 🆑 fix: out of bounds when updating lights in lighting subsystem /🆑 --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>