Software /
code /
prosody
Changeset
10594:13d5fb74648f
util.set: Fix equality metamethod in Lua 5.3
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 15 Jan 2020 21:18:30 +0100 |
parents | 10593:079b31c8dbf2 |
children | 10595:17bab303daf5 |
files | util/set.lua |
diffstat | 1 files changed, 6 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/util/set.lua Wed Jan 15 21:16:08 2020 +0100 +++ b/util/set.lua Wed Jan 15 21:18:30 2020 +0100 @@ -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 @@ 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