From a67a6ae94a94e60d092842bcdcbb3efbe9604634 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Fri, 19 Jun 2026 13:57:37 -0400 Subject: [PATCH] Various Null Access Fixes (#22730) image Just a few fixes for some various runtime errors and two hard del triggers on the Sentry logs. --- code/game/objects/effects/chem/chemsmoke.dm | 8 +++----- code/modules/events/carp_migration.dm | 4 ++-- code/modules/events/rogue_drones.dm | 8 ++++++-- code/modules/paperwork/photocopier.dm | 8 ++++++-- html/changelogs/hellfirejag-misc-sentry-cleanup.yml | 6 ++++++ 5 files changed, 23 insertions(+), 11 deletions(-) create mode 100644 html/changelogs/hellfirejag-misc-sentry-cleanup.yml diff --git a/code/game/objects/effects/chem/chemsmoke.dm b/code/game/objects/effects/chem/chemsmoke.dm index 2c11fc88a23..e1ada99d0c9 100644 --- a/code/game/objects/effects/chem/chemsmoke.dm +++ b/code/game/objects/effects/chem/chemsmoke.dm @@ -153,13 +153,11 @@ var/mobnames = "" if (touched_mobs.len > 1) mobnames += "Affected players: " - var/i = 1 - do + var/num_players = length(touched_mobs) + for (var/i = 1, i <= num_players, i++) mobnames += "?" - if (touched_mobs[i+1]) + if (i < num_players) mobnames += ", " - i++ - while (touched_mobs[i]) mobnames += "." else mobnames += "Affected player: [touched_mobs[1]]." var/containing = "" diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index cbebeb3311d..0936e91e128 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -96,12 +96,12 @@ /datum/event/carp_migration/end(var/faked) ..() - for (var/carp_ref in spawned_carp) - var/datum/weakref/carp_weakref = carp_ref + for (var/datum/weakref/carp_weakref in spawned_carp) var/mob/living/simple_animal/hostile/carp/fish = carp_weakref.resolve() if (fish && prob(50) && is_type_in_typecache(fish.loc, despawn_turfs)) spawned_carp -= carp_weakref qdel(carp_weakref) + spawned_carp?.Cut() /datum/event/carp_migration/cozmo/start() ..() diff --git a/code/modules/events/rogue_drones.dm b/code/modules/events/rogue_drones.dm index cb1f3eb0518..ca6ce3cd942 100644 --- a/code/modules/events/rogue_drones.dm +++ b/code/modules/events/rogue_drones.dm @@ -34,8 +34,10 @@ ..() var/num_recovered = 0 - for(var/drone in drones_list) - var/mob/living/simple_animal/hostile/icarus_drone/malf/D = drone + for(var/mob/living/simple_animal/hostile/icarus_drone/malf/D in drones_list) + if (QDELETED(D)) + continue + spark(D.loc, 3) D.beam_out() num_recovered++ @@ -45,3 +47,5 @@ command_announcement.Announce(SSatlas.current_map.rogue_drone_end_message, "Rogue Drone Alert", new_sound = 'sound/AI/rogue_drone_end_message.ogg', zlevels = affecting_z) else command_announcement.Announce(SSatlas.current_map.rogue_drone_destroyed_message, "Rogue Drone Alert", new_sound = 'sound/AI/rogue_drone_destroyed_message.ogg', zlevels = affecting_z) + + drones_list?.Cut() diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index d194b788f30..db1c7a7bb88 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -148,7 +148,9 @@ return P else if (istype(c_item, /obj/item/paper_bundle)) var/obj/item/paper_bundle/B = bundlecopy(target, c_item, TRUE, toner) - sleep(15*B.pages.len) + if (!B) + return FALSE + sleep(15 * length(B.pages)) return B else to_chat(usr, SPAN_WARNING("\The [c_item] can't be copied by \the [target].")) @@ -199,7 +201,7 @@ c.offset_y = copy.offset_y var/list/temp_overlays = copy.overlays //Iterates through stamps var/image/img //and puts a matching - for (var/j = 1, j <= min(temp_overlays.len, copy.ico.len), j++) //gray overlay onto the copy + for (var/j = 1, j <= min(length(temp_overlays), length(copy.ico)), j++) //gray overlay onto the copy if (findtext(copy.ico[j], "cap") || findtext(copy.ico[j], "cent")) img = image('icons/obj/bureaucracy.dmi', "paper_stamp-circle") else if (findtext(copy.ico[j], "deny")) @@ -270,6 +272,8 @@ W = copy_type(target, W, need_toner ? toner : 15, do_print) + if (!W) + continue W.forceMove(p) p.pages += W diff --git a/html/changelogs/hellfirejag-misc-sentry-cleanup.yml b/html/changelogs/hellfirejag-misc-sentry-cleanup.yml new file mode 100644 index 00000000000..3c048679a7c --- /dev/null +++ b/html/changelogs/hellfirejag-misc-sentry-cleanup.yml @@ -0,0 +1,6 @@ +author: Hellfirejag +delete-after: True +changes: + - bugfix: "Fixed a runtime error with the photocopier." + - bugfix: "Fixed a runtime error with smoke effects" + - bugfix: "Fixed a hard delete from carp migration and icarus drone swarm events"