diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index a4fc67ddf32..917c198af2f 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -104,6 +104,7 @@
if(prob(addiction_removal_chance))
to_chat(occupant, "You no longer feel reliant on [R.name]!")
occupant.reagents.addiction_list.Remove(R)
+ qdel(R)
for(var/mob/M as mob in src) // makes sure that simple mobs don't get stuck inside a sleeper when they resist out of occupant's grasp
if(M == occupant)
diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm
index 95dece3ad75..6e4379d1fc9 100644
--- a/code/modules/reagents/chemistry/holder.dm
+++ b/code/modules/reagents/chemistry/holder.dm
@@ -292,6 +292,8 @@ var/const/INGEST = 2
if(prob(20) && (world.timeofday > (R.last_addiction_dose + ADDICTION_TIME))) //Each addiction lasts 8 minutes before it can end
to_chat(M, "You no longer feel reliant on [R.name]!")
addiction_list.Remove(R)
+ qdel(R)
+
if(update_flags & STATUS_UPDATE_HEALTH)
M.updatehealth("reagent metabolism")
else if(update_flags & STATUS_UPDATE_STAT)
diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm
index 79c23d8dfad..a2ecc811e6a 100644
--- a/code/modules/reagents/chemistry/reagents.dm
+++ b/code/modules/reagents/chemistry/reagents.dm
@@ -32,6 +32,9 @@
/datum/reagent/Destroy()
. = ..()
holder = null
+ if(islist(data))
+ data.Cut()
+ data = null
/datum/reagent/proc/reaction_temperature(exposed_temperature, exposed_volume) //By default we do nothing.
return