[MDB IGNORE] [IDB IGNORE] Upstream Sync - 04/17/2026 (#5453)

Upstream 04/17/2026

fixes https://github.com/Bubberstation/Bubberstation/issues/5549

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com>
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com>
Co-authored-by: loganuk <fakeemail123@aol.com>
Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com>
Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com>
Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
Co-authored-by: Lucy <lucy@absolucy.moe>
Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com>
Co-authored-by: Isratosh <Isratosh@hotmail.com>
Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com>
Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com>
Co-authored-by: Alexander V. <volas@ya.ru>
Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com>
Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com>
Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com>
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com>
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com>
Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com>
Co-authored-by: Josh <josh.adam.powell@gmail.com>
Co-authored-by: Josh Powell <josh.powell@softwire.com>
Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com>
Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com>
Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com>
Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
This commit is contained in:
Alexis
2026-05-16 00:56:00 +02:00
committed by GitHub
co-authored by tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> ArcaneMusic MrMelbert Rhials rageguy505 LemonInTheDark John Willard Aliceee2ch Time-Green Tsar-Salat SmArtKar Maxipat SyncIt21 deltanedas SimplyLogan loganuk Leland Kemble FalloutFalcon Roxy Lucy siliconOpossum Isratosh TheRyeGuyWhoWillNowDie Neocloudy Alexander V. ElGitificador Twaticus dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Bloop Cameron Lennox Tim Iamgoofball Layzu666 Arturlang _0Steven mrmanlikesbt Ben10Omintrix John F. Kennedy Cursor Josh Josh Powell Yobrocharlie Hardly3D shayoki LT3
parent d1f6ed3137
commit 21b4095dfd
2082 changed files with 60158 additions and 140127 deletions
@@ -1,6 +1,65 @@
#ifdef REFERENCE_TRACKING
#define REFSEARCH_RECURSE_LIMIT 64
#ifdef FAST_REFERENCE_TRACKING
// typecache of types that almost certainly have no refs, and thus can be safely skipped when finding references
GLOBAL_ALIST_INIT(reftracker_skip_typecache, init_reftracker_skip_typecache())
// empty alist we swap with GLOB.reftracker_skip_typecache whenever someone calls toggle_fast_reftracking
GLOBAL_ALIST_EMPTY(reftracker_skip_typecache_b)
/proc/toggle_fast_reftracking()
var/alist/a = GLOB.reftracker_skip_typecache
var/alist/b = GLOB.reftracker_skip_typecache_b
GLOB.reftracker_skip_typecache = b
GLOB.reftracker_skip_typecache_b = a
/proc/init_reftracker_skip_typecache()
. = alist()
for(var/base_type in list(
/icon,
/matrix,
/regex,
/atom/movable/mirage_holder,
/atom/movable/render_step/emissive_blocker,
/datum/armor,
/datum/asset_cache_item,
/datum/book_info,
/datum/card,
/datum/chat_payload,
/datum/comm_log_entry,
/datum/gas_mixture,
/datum/greyscale_layer,
/datum/icon_transformer,
/datum/instrument_key,
/datum/lighting_object, // only contains turf and MA refs
/datum/movespeed_modifier,
/datum/painting,
/datum/paper_input,
/datum/physiology,
/datum/plant_gene/reagent,
/datum/qdel_item,
/datum/stack_recipe,
/datum/tlv,
/datum/universal_icon,
/datum/weakref,
/datum/z_pillar,
/obj/effect/abstract/z_holder,
// stuff below isn't 100% guaranteed to be ref-free, but they're prolly not an issue
/turf/closed/mineral,
/turf/open/lava,
/turf/open/misc/asteroid,
/turf/open/openspace,
/turf/open/space,
/obj/structure/flora, // icebox and such has a LOT of these
/datum/chatmessage,
/datum/lighting_corner,
/datum/log_entry, // hopefully nobody's silly enough to accidentally pass a reference to these... right???
/datum/reagent/consumable/nutriment,
))
for(var/type in typesof(base_type))
.[type] = TRUE
#endif
/datum/proc/find_references(references_to_clear = INFINITY)
if(usr?.client)
if(tgui_alert(usr,"Running this will lock everything up for about 5 minutes. Would you like to begin the search?", "Find References", list("Yes", "No")) != "Yes")
@@ -36,7 +95,15 @@
if(src.references_to_clear == 0)
return
#ifdef FAST_REFERENCE_TRACKING
var/alist/skip_types = GLOB.reftracker_skip_typecache
#endif
for(var/datum/thing in world) //atoms (don't beleive its lies)
#ifdef FAST_REFERENCE_TRACKING
if(skip_types[thing.type])
continue
#endif
DoSearchVar(thing, "World -> [thing.type]", starting_time)
if(src.references_to_clear == 0)
break
@@ -45,6 +112,10 @@
return
for(var/datum/thing) //datums
#ifdef FAST_REFERENCE_TRACKING
if(skip_types[thing.type])
continue
#endif
DoSearchVar(thing, "Datums -> [thing.type]", starting_time)
if(src.references_to_clear == 0)
break
@@ -126,7 +197,7 @@
else if(islist(potential_container))
var/list/potential_cache = potential_container
var/is_alist = istype(potential_cache, /alist)
var/is_alist = isalist(potential_cache)
for(var/element_in_list in potential_cache)
//Check normal sublists
if(islist(element_in_list))