Fixes global init linux bug by using proc typepath references, adds better error detection (#2137)

This commit is contained in:
CitadelStationBot
2017-07-26 02:05:10 -05:00
committed by kevinz000
parent 770341fee0
commit 986549df26
+12 -9
View File
@@ -52,15 +52,18 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars)
/datum/controller/global_vars/Initialize()
gvars_datum_init_order = list()
gvars_datum_protected_varlist = list("gvars_datum_protected_varlist")
//See https://github.com/tgstation/tgstation/issues/26954
for(var/I in typesof(/datum/controller/global_vars/proc))
var/CLEANBOT_RETURNS = "[I]"
pass(CLEANBOT_RETURNS)
for(var/I in vars - gvars_datum_in_built_vars)
var/list/global_procs = typesof(/datum/controller/global_vars/proc)
var/expected_len = vars.len - gvars_datum_in_built_vars.len
if(global_procs.len != expected_len)
warning("Unable to detect all global initialization procs! Expected [expected_len] got [global_procs.len]!")
if(global_procs.len)
var/list/expected_global_procs = vars - gvars_datum_in_built_vars
for(var/I in global_procs)
expected_global_procs -= replacetext("[I]", "InitGlobal", "")
log_world("Missing procs: [expected_global_procs.Join(", ")]")
for(var/I in global_procs)
var/start_tick = world.time
call(src, "InitGlobal[I]")()
call(src, I)()
var/end_tick = world.time
if(end_tick - start_tick)
warning("Global [I] slept during initialization!")
warning("Global [replacetext("[I]", "InitGlobal", "")] slept during initialization!")