summaryrefslogtreecommitdiff
path: root/indra/newview/scripts/lua
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2024-06-11 21:50:35 -0400
committerNat Goodspeed <nat@lindenlab.com>2024-06-11 21:50:35 -0400
commitf2020bff30808d28aec06cce5fed61717fcde7fc (patch)
tree614373f7411fd412dadd00f7076d82cd4738ce1d /indra/newview/scripts/lua
parent18c4dcc5998e061fe3ab54607665c775dd18c826 (diff)
Fix a couple bugs in startup.lua.
The 'startup' table, the module's namespace, must be defined near the top because its local waitfor:process() override references startup. The byname table's metatable's __index() function wants to raise an error if you try to access an undefined entry, but it referenced t[k] to check that, producing infinite recursion. Use rawget(t, k) instead. Also use new leap.WaitFor(args) syntax instead of leap.WaitFor:new(args).
Diffstat (limited to 'indra/newview/scripts/lua')
-rw-r--r--indra/newview/scripts/lua/startup.lua9
1 files changed, 4 insertions, 5 deletions
diff --git a/indra/newview/scripts/lua/startup.lua b/indra/newview/scripts/lua/startup.lua
index 4311bb9a60..c3040f94b8 100644
--- a/indra/newview/scripts/lua/startup.lua
+++ b/indra/newview/scripts/lua/startup.lua
@@ -12,6 +12,8 @@ local function dbg(...) end
-- local dbg = require 'printf'
-- ---------------------------------------------------------------------------
+local startup = {}
+
-- Get the list of startup states from the viewer.
local bynum = leap.request('LLStartUp', {op='getStateTable'})['table']
@@ -19,7 +21,7 @@ local byname = setmetatable(
{},
-- set metatable to throw an error if you look up invalid state name
{__index=function(t, k)
- local v = t[k]
+ local v = rawget(t, k)
if v then
return v
end
@@ -35,7 +37,7 @@ end
-- specialize a WaitFor to track the viewer's startup state
local startup_pump = 'StartupState'
-local waitfor = leap.WaitFor:new(0, startup_pump)
+local waitfor = leap.WaitFor(0, startup_pump)
function waitfor:filter(pump, data)
if pump == self.name then
return data
@@ -57,8 +59,6 @@ leap.request(leap.cmdpump(),
leap.send('LLStartUp', {op='postStartupState'})
-- ---------------------------------------------------------------------------
-startup = {}
-
-- wait for response from postStartupState
while not startup._state do
dbg('startup.state() waiting for first StartupState event')
@@ -98,4 +98,3 @@ function startup.wait(state)
end
return startup
-