Builtin: Fix check for a player object in core.check_player_privs
core.check_player_privs accepts as first argument a name or player object, but just tested for a string. This caused crashes inside builtin, when being passed any unexpected types. This provides a better (duck-typing like) test, better error reporting.master
parent
f833159a68
commit
58eb5f39d4
|
@ -48,11 +48,13 @@ function core.after(after, func, ...)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
function core.check_player_privs(player_or_name, ...)
|
function core.check_player_privs(name, ...)
|
||||||
local name = player_or_name
|
local arg_type = type(name)
|
||||||
-- Check if we have been provided with a Player object.
|
if (arg_type == "userdata" or arg_type == "table") and
|
||||||
if type(name) ~= "string" then
|
name.get_player_name then -- If it quacks like a Player...
|
||||||
name = name:get_player_name()
|
name = name:get_player_name()
|
||||||
|
elseif arg_type ~= "string" then
|
||||||
|
error("Invalid core.check_player_privs argument type: " .. arg_type, 2)
|
||||||
end
|
end
|
||||||
|
|
||||||
local requested_privs = {...}
|
local requested_privs = {...}
|
||||||
|
|
Loading…
Reference in New Issue