[MIRROR] Fixed lua-created atoms from hard deleting [MDB IGNORE] (#22921)

* Fixed lua-created atoms from hard deleting (#77391)

## About The Pull Request
Lua created atoms hard delete because they get added to a references
list without ever being cleared. This fixes that by registering a
qdeleting signal on them and removing them from the list on delete.

## Why It's Good For The Game
Harddel fixes

## Changelog
🆑
fix: Fixed a hard delete that would occur with lua-created atoms.
/🆑

---------

Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>

* Fixed lua-created atoms from hard deleting

---------

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
This commit is contained in:
SkyratBot
2023-08-08 03:21:50 +02:00
committed by GitHub
parent 1636176b5f
commit f349668a11
2 changed files with 14 additions and 3 deletions
@@ -168,4 +168,12 @@ GLOBAL_PROTECT(lua_usr)
for(var/datum/lua_editor/editor as anything in editor_list)
SStgui.update_uis(editor)
// Called by lua scripts when they add an atom to var/list/references so that it gets cleared up on delete.
/datum/lua_state/proc/clear_on_delete(datum/to_clear)
RegisterSignal(to_clear, COMSIG_QDELETING, PROC_REF(on_delete))
/datum/lua_state/proc/on_delete(datum/to_clear)
SIGNAL_HANDLER
references -= to_clear
#undef MAX_LOG_REPEAT_LOOKBACK