From 2e114ede5c27671db958d324016938a1baa6c94b Mon Sep 17 00:00:00 2001 From: Leshana Date: Mon, 30 Mar 2020 16:49:22 -0400 Subject: [PATCH] Fix error handler printing bogus src.loc and usr.loc info --- code/_helpers/logging.dm | 16 ++++++++++++---- code/modules/error_handler/error_handler.dm | 8 ++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/code/_helpers/logging.dm b/code/_helpers/logging.dm index 7f3393ccc9..18cede2ea4 100644 --- a/code/_helpers/logging.dm +++ b/code/_helpers/logging.dm @@ -259,20 +259,28 @@ return key_name(whom, 1, include_name) // Helper procs for building detailed log lines +// +// These procs must not fail under ANY CIRCUMSTANCES! +// + /datum/proc/log_info_line() return "[src] ([type])" /atom/log_info_line() + . = ..() var/turf/t = get_turf(src) if(istype(t)) - return "([t]) ([t.x],[t.y],[t.z]) ([t.type])" + return "[.] @ [t.log_info_line()]" else if(loc) - return "([loc]) (0,0,0) ([loc.type])" + return "[.] @ ([loc]) (0,0,0) ([loc.type])" else - return "(NULL) (0,0,0) (NULL)" + return "[.] @ (NULL) (0,0,0) (NULL)" + +/turf/log_info_line() + return "([src]) ([x],[y],[z]) ([type])" /mob/log_info_line() - return "[..()] ([ckey])" + return "[..()] (ckey=[ckey])" /proc/log_info_line(var/datum/d) if(!d) diff --git a/code/modules/error_handler/error_handler.dm b/code/modules/error_handler/error_handler.dm index 098ea614b5..edae4c42ea 100644 --- a/code/modules/error_handler/error_handler.dm +++ b/code/modules/error_handler/error_handler.dm @@ -51,12 +51,12 @@ GLOBAL_VAR_INIT(total_runtimes_skipped, 0) // First, try to make better src/usr info lines if(istype(e_src)) srcinfo = list(" src: [log_info_line(e_src)]") - locinfo = log_info_line(e_src) - if(locinfo) - srcinfo += " src.loc: [locinfo]" + var/atom/atom_e_src = e_src + if(istype(atom_e_src)) + srcinfo += " src.loc: [log_info_line(atom_e_src.loc)]" if(istype(usr)) usrinfo = list(" usr: [log_info_line(usr)]") - locinfo = log_info_line(usr) + locinfo = log_info_line(usr.loc) if(locinfo) usrinfo += " usr.loc: [locinfo]" // The proceeding mess will almost definitely break if error messages are ever changed