PDA

View Full Version : stack overflow when using User.getIdentityLabel()



JMessmer
January 29th, 2024, 12:08
I am using a function to get the current user as part of my debug log.


function getUser()
if User then
sUser = User.getIdentityLabel();
end
if not(sUser) or sUser:len() == 0 then
if Session.IsHost then
sUser = "gm";
else
sUser = "unknown player";
end
end
if sUser:len() > 15 then
sUser = sUser:sub(1, 15);
end
sUser = string.format("%-15s",sUser);
return sUser;
end


then for each debug log message I am producing I run this piece of code:


function printLogMessage2(sInputScriptName, sInputFuncName, sMessage)
sUser = getUser();
sUser = string.format("%-17s",sUser); -- add two empty spaces for print
if nLogLevel > 0 then
if sMessage then
Debug.console(sUser .. " | " .. sInputScriptName .. ", " .. sInputFuncName ..", " .. sMessage);
else
Debug.console(sUser .. " | " .. sInputScriptName .. ", " .. sInputFuncName);
end
end
end

I am using this for some years now and I have never received this error message before:
[1/29/2024 12:45:47 PM] [ERROR] Handler error: [string "DSA_DZ_4.1:scripts/manager_debug.lua"]:184: stack overflow

As a fix I am trying to set the sUser as a local variable in my DebugManager and set it in the onInit function. Nevertheless I think that the stack overflow should not happen.

JMessmer
January 29th, 2024, 12:12
Alright - sorry - my bad. I must have an endless loop in my code. I keep logging stuff even in a new session.