diff options
author | Kim Alvefur <zash@zash.se> | 2020-01-15 21:18:30 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2020-01-15 21:18:30 +0100 |
commit | f4af8004e39ff6f0066fda7dd7eb5457371e1e64 (patch) | |
tree | 5292b4c3ae6633909a5176abdd98ff70cb95b124 /util/set.lua | |
parent | 78eb3b5935a53e1a4e1217555f438674ca40e2ba (diff) | |
download | prosody-f4af8004e39ff6f0066fda7dd7eb5457371e1e64.tar.gz prosody-f4af8004e39ff6f0066fda7dd7eb5457371e1e64.zip |
util.set: Fix equality metamethod in Lua 5.3
Diffstat (limited to 'util/set.lua')
-rw-r--r-- | util/set.lua | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/util/set.lua b/util/set.lua index 02fabc6a..827a9158 100644 --- a/util/set.lua +++ b/util/set.lua @@ -8,6 +8,7 @@ local ipairs, pairs, setmetatable, next, tostring = ipairs, pairs, setmetatable, next, tostring; +local getmetatable = getmetatable; local t_concat = table.concat; local _ENV = nil; @@ -146,6 +147,11 @@ function set_mt.__div(set, func) return new_set; end function set_mt.__eq(set1, set2) + if getmetatable(set1) ~= set_mt or getmetatable(set2) ~= set_mt then + -- Lua 5.3+ calls this if both operands are tables, even if metatables differ + return false; + end + set1, set2 = set1._items, set2._items; for item in pairs(set1) do if not set2[item] then |