From 710d60abdab48902d298eb5424672863d5463907 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Wed, 25 Feb 2015 10:58:56 -0500 Subject: [PATCH] GC fixes --- code/controllers/garbage.dm | 6 ++- code/controllers/lighting_controller.dm | 2 +- code/controllers/master_controller.dm | 2 +- code/controllers/voting.dm | 2 +- code/datums/datumvars.dm | 4 +- .../helper_datums/construction_datum.dm | 2 +- code/datums/helper_datums/teleport.dm | 2 +- code/datums/mind.dm | 52 +++++++++---------- code/datums/recipe.dm | 4 +- code/defines/obj/weapon.dm | 10 ++-- code/game/dna/dna_modifier.dm | 8 +-- code/game/dna/genes/goon_powers.dm | 2 +- code/game/dna/genes/monkey.dm | 6 +-- code/game/supplyshuttle.dm | 4 +- code/modules/admin/admin_verbs.dm | 3 +- 15 files changed, 57 insertions(+), 52 deletions(-) diff --git a/code/controllers/garbage.dm b/code/controllers/garbage.dm index b120d83abcb..3c96126c0f1 100644 --- a/code/controllers/garbage.dm +++ b/code/controllers/garbage.dm @@ -6,7 +6,7 @@ var/list/gc_hard_del_types = new var/datum/garbage_collector/garbageCollector -/client/verb/gc_dump_hdl() +/client/proc/gc_dump_hdl() set name = "(GC) Hard Del List" set desc = "List types that are hard del()'d by the GC." set category = "Debug" @@ -60,6 +60,8 @@ var/datum/garbage_collector/garbageCollector #endif AM.hard_deleted = 1 + if(!AM.type in gc_hard_del_types) + gc_hard_del_types += AM.type del AM hard_dels++ @@ -93,6 +95,8 @@ var/datum/garbage_collector/garbageCollector if(!istype(AM)) WARNING("qdel() passed object of type [AM.type]. qdel() can only handle /atom/movable types.") + if(!AM.type in gc_hard_del_types) + gc_hard_del_types += AM.type del(AM) garbageCollector.hard_dels++ garbageCollector.dels_count++ diff --git a/code/controllers/lighting_controller.dm b/code/controllers/lighting_controller.dm index fd1a2305cb1..a7decbc1185 100644 --- a/code/controllers/lighting_controller.dm +++ b/code/controllers/lighting_controller.dm @@ -19,7 +19,7 @@ datum/controller/lighting/New() if(lighting_controller != src) if(istype(lighting_controller,/datum/controller/lighting)) Recover() //if we are replacing an existing lighting_controller (due to a crash) we attempt to preserve as much as we can - del(lighting_controller) + qdel(lighting_controller) lighting_controller = src diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm index 98c44b42b6e..963e01b7260 100644 --- a/code/controllers/master_controller.dm +++ b/code/controllers/master_controller.dm @@ -42,7 +42,7 @@ datum/controller/game_controller/New() if(master_controller != src) if(istype(master_controller)) Recover() - del(master_controller) + qdel(master_controller) master_controller = src if(!job_master) diff --git a/code/controllers/voting.dm b/code/controllers/voting.dm index 9c19007f590..30ee4a99e43 100644 --- a/code/controllers/voting.dm +++ b/code/controllers/voting.dm @@ -17,7 +17,7 @@ datum/controller/vote New() if(vote != src) if(istype(vote)) - del(vote) + qdel(vote) vote = src proc/process() //called by master_controller diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index a7db9300c73..f3062199ec7 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -627,7 +627,7 @@ client for(var/obj/Obj in world) if(Obj.type == O_type) i++ - del(Obj) + qdel(Obj) if(!i) usr << "No objects of this type exist" return @@ -638,7 +638,7 @@ client for(var/obj/Obj in world) if(istype(Obj,O_type)) i++ - del(Obj) + qdel(Obj) if(!i) usr << "No objects of this type exist" return diff --git a/code/datums/helper_datums/construction_datum.dm b/code/datums/helper_datums/construction_datum.dm index ffede1e6957..0eb4d73dfde 100644 --- a/code/datums/helper_datums/construction_datum.dm +++ b/code/datums/helper_datums/construction_datum.dm @@ -231,7 +231,7 @@ user.visible_message(fixText(state["vis_msg"],user),fixText(state["self_msg"],user)) if("delete" in state) - del(used_atom) + qdel(used_atom) else if("spawn" in state) var/spawntype=state["spawn"] var/atom/A = new spawntype(holder.loc) diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index 23d9ff5aa18..70024bf68d6 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -49,7 +49,7 @@ //must succeed in most cases proc/setTeleatom(atom/movable/ateleatom) if(istype(ateleatom, /obj/effect) && !istype(ateleatom, /obj/effect/dummy/chameleon)) - del(ateleatom) + qdel(ateleatom) return 0 if(istype(ateleatom)) teleatom = ateleatom diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 4c63722a2ff..905d47d36b8 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -735,7 +735,7 @@ datum/mind var/obj/item/device/flash/flash = locate() in L if (!flash) usr << "\red Deleting flash failed!" - del(flash) + qdel(flash) if("repairflash") var/list/L = current.get_contents() @@ -748,7 +748,7 @@ datum/mind if("reequip") var/list/L = current.get_contents() var/obj/item/device/flash/flash = locate() in L - del(flash) + qdel(flash) take_uplink() var/fail = 0 fail |= !ticker.mode.equip_traitor(current, 1) @@ -927,17 +927,17 @@ datum/mind if("lair") current.loc = get_turf(locate("landmark*Syndicate-Spawn")) if("dressup") - del(H.belt) - del(H.back) - del(H.l_ear) - del(H.r_ear) - del(H.gloves) - del(H.head) - del(H.shoes) - del(H.wear_id) - del(H.wear_pda) - del(H.wear_suit) - del(H.w_uniform) + qdel(H.belt) + qdel(H.back) + qdel(H.l_ear) + qdel(H.r_ear) + qdel(H.gloves) + qdel(H.head) + qdel(H.shoes) + qdel(H.wear_id) + qdel(H.wear_pda) + qdel(H.wear_suit) + qdel(H.w_uniform) if (!ticker.mode.equip_syndicate(current)) usr << "\red Equipping a syndicate failed!" @@ -1150,7 +1150,7 @@ datum/mind proc/take_uplink() var/obj/item/device/uplink/hidden/H = find_syndicate_uplink() if(H) - del(H) + qdel(H) proc/make_AI_Malf() @@ -1191,17 +1191,17 @@ datum/mind current.loc = get_turf(locate("landmark*Syndicate-Spawn")) var/mob/living/carbon/human/H = current - del(H.belt) - del(H.back) - del(H.l_ear) - del(H.r_ear) - del(H.gloves) - del(H.head) - del(H.shoes) - del(H.wear_id) - del(H.wear_pda) - del(H.wear_suit) - del(H.w_uniform) + qdel(H.belt) + qdel(H.back) + qdel(H.l_ear) + qdel(H.r_ear) + qdel(H.gloves) + qdel(H.head) + qdel(H.shoes) + qdel(H.wear_id) + qdel(H.wear_pda) + qdel(H.wear_suit) + qdel(H.w_uniform) ticker.mode.equip_syndicate(current) @@ -1290,7 +1290,7 @@ datum/mind var/list/L = current.get_contents() var/obj/item/device/flash/flash = locate() in L - del(flash) + qdel(flash) take_uplink() var/fail = 0 // fail |= !ticker.mode.equip_traitor(current, 1) diff --git a/code/datums/recipe.dm b/code/datums/recipe.dm index d2c747dd5b8..4f2750c0c06 100644 --- a/code/datums/recipe.dm +++ b/code/datums/recipe.dm @@ -79,7 +79,7 @@ var/obj/result_obj = new result(container) for (var/obj/O in (container.contents-result_obj)) O.reagents.trans_to(result_obj, O.reagents.total_volume) - del(O) + qdel(O) container.reagents.clear_reagents() return result_obj @@ -91,7 +91,7 @@ O.reagents.del_reagent("nutriment") O.reagents.update_total() O.reagents.trans_to(result_obj, O.reagents.total_volume) - del(O) + qdel(O) container.reagents.clear_reagents() return result_obj diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index a95fe3a4ac2..04baae91356 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -234,7 +234,7 @@ if(H) user << "You use [src] to destroy [H]." signs -= H - del(H) + qdel(H) else if(signs.len < max_signs) H = new(get_turf(target)) @@ -250,7 +250,7 @@ if(signs.len) var/list/L = signs.Copy() for(var/sign in L) - del(sign) + qdel(sign) signs -= sign user << "You clear all active holograms." @@ -313,7 +313,7 @@ if(ishuman(C)) dead_legs(C) if(src) - del(src) + qdel(src) proc/dead_legs(mob/living/carbon/human/H as mob) var/datum/organ/external/l = H.get_organ("l_leg") @@ -562,8 +562,8 @@ if(istype(A, /obj/effect/plantsegment)) for(var/obj/effect/plantsegment/B in orange(A,1)) if(prob(80)) - del B - del A + qdel(B) + qdel(A) /* /obj/item/weapon/cigarpacket diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index 5e451c19a92..29b1cd1b3d9 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -65,7 +65,7 @@ component_parts += new /obj/item/stack/cable_coil(src, 1) component_parts += new /obj/item/stack/cable_coil(src, 1) RefreshParts() - + /obj/machinery/dna_scannernew/upgraded/New() ..() component_parts = list() @@ -233,7 +233,7 @@ return put_in(G.affecting) src.add_fingerprint(user) - del(G) + qdel(G) return /obj/machinery/dna_scannernew/proc/put_in(var/mob/M) @@ -309,7 +309,7 @@ if(prob(75)) for(var/atom/movable/A as mob|obj in src) A.loc = src.loc - del(src) + qdel(src) /obj/machinery/computer/scan_consolenew name = "DNA Modifier Access Console" @@ -367,7 +367,7 @@ /obj/machinery/computer/scan_consolenew/blob_act() if(prob(75)) - del(src) + qdel(src) /obj/machinery/computer/scan_consolenew/power_change() if(stat & BROKEN) diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm index c154d8f9249..239b71a3992 100644 --- a/code/game/dna/genes/goon_powers.dm +++ b/code/game/dna/genes/goon_powers.dm @@ -316,7 +316,7 @@ else usr.visible_message("\red [usr] eats \the [the_item].") playsound(usr.loc, 'sound/items/eatfood.ogg', 50, 0) - del(the_item) + qdel(the_item) doHeal(usr) return diff --git a/code/game/dna/genes/monkey.dm b/code/game/dna/genes/monkey.dm index c810b0dd88c..03ca9880c2c 100644 --- a/code/game/dna/genes/monkey.dm +++ b/code/game/dna/genes/monkey.dm @@ -33,7 +33,7 @@ animation.master = src flick("h2monkey", animation) sleep(48) - del(animation) + qdel(animation) var/mob/living/carbon/monkey/O = null @@ -56,7 +56,7 @@ for(var/obj/T in (M.contents-implants)) - del(T) + qdel(T) O.loc = M.loc @@ -78,7 +78,7 @@ I.loc = O I.implanted = O // O.update_icon = 1 //queue a full icon update at next life() call - del(M) + qdel(M) return /datum/dna/gene/monkey/deactivate(var/mob/living/M, var/connected, var/flags) diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 94ad7725c1b..e251f9a5777 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -223,8 +223,8 @@ var/list/mechtoys = list( plat_count += P.amount // If you send something in a crate, centcom's keeping it! - fixes secure crates being sent to centom to open them - del(A) - del(MA) + qdel(A) + qdel(MA) if(plasma_count) points += plasma_count * points_per_plasma diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 53f887b425e..6a7ee186c40 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -144,7 +144,8 @@ var/list/admin_verbs_debug = list( /client/proc/callproc, /client/proc/callproc_datum, /client/proc/toggledebuglogs, - /client/proc/qdel_toggle // /vg/ + /client/proc/qdel_toggle, // /vg/ + /client/proc/gc_dump_hdl ) var/list/admin_verbs_possess = list( /proc/possess,