[MIRROR] (Partially) Fixes Out Of Memory crashes (#10092)

Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-02-07 08:36:42 -07:00
committed by GitHub
parent 133f37de97
commit ec71611656
31 changed files with 124 additions and 67 deletions

View File

@@ -90,6 +90,8 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain)
brainmob.client.screen.len = null //clear the hud
/obj/item/organ/internal/brain/Destroy()
if(brainmob && brainmob.dna)
qdel(brainmob.dna)
QDEL_NULL(brainmob)
. = ..()
@@ -101,7 +103,7 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain)
brainmob.real_name = H.real_name
if(istype(H))
brainmob.dna = H.dna.Clone()
qdel_swap(brainmob.dna, H.dna.Clone())
brainmob.timeofhostdeath = H.timeofdeath
brainmob.ooc_notes = H.ooc_notes //VOREStation Edit
brainmob.ooc_notes_likes = H.ooc_notes_likes
@@ -213,7 +215,7 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain)
/obj/item/organ/internal/brain/slime/proc/reviveBody()
var/datum/dna2/record/R = new /datum/dna2/record()
R.dna = brainmob.dna
qdel_swap(R.dna, brainmob.dna.Clone())
R.ckey = brainmob.ckey
R.id = copytext(md5(brainmob.real_name), 2, 6)
R.name = R.dna.real_name
@@ -253,7 +255,7 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain)
H.dna = new /datum/dna()
H.dna.real_name = H.real_name
else
H.dna = R.dna
qdel_swap(H.dna, R.dna.Clone())
H.UpdateAppearance()
H.sync_organ_dna()
@@ -287,6 +289,8 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain)
for(var/datum/language/L in R.languages)
H.add_language(L.name)
H.flavor_texts = R.flavor.Copy()
qdel(R.dna)
qdel(R)
qdel(src)
return 1

View File

@@ -54,7 +54,7 @@ var/list/organ_cache = list()
if(transplant_data) transplant_data.Cut()
if(autopsy_data) autopsy_data.Cut()
if(trace_chemicals) trace_chemicals.Cut()
dna = null
QDEL_NULL(dna)
species = null
return ..()
@@ -93,8 +93,8 @@ var/list/organ_cache = list()
var/mob/living/carbon/C = holder
species = GLOB.all_species[SPECIES_HUMAN]
if(holder.dna)
dna = C.dna.Clone()
species = C.species //VOREStation Edit - For custom species
qdel_swap(dna, C.dna.Clone())
species = C.species
else
log_debug("[src] at [loc] spawned without a proper DNA.")
var/mob/living/carbon/human/H = C
@@ -131,7 +131,7 @@ var/list/organ_cache = list()
/obj/item/organ/proc/set_dna(var/datum/dna/new_dna)
if(new_dna)
dna = new_dna.Clone()
qdel_swap(dna, new_dna.Clone())
if(blood_DNA)
blood_DNA.Cut()
blood_DNA[dna.unique_enzymes] = dna.b_type

View File

@@ -95,6 +95,9 @@
parent.children -= src
parent = null
if(wounds)
QDEL_LIST(wounds)
if(children)
for(var/obj/item/organ/external/C in children)
children -= C