From d6737c0bb35a8b15607a380fffd153bbaa721d55 Mon Sep 17 00:00:00 2001 From: Enyby Date: Mon, 16 Dec 2019 15:31:13 +0200 Subject: [PATCH] Improve work with weak keys. ``` for _, m in ipairs({'', 'k', 'kv', 'v'}) do print('test', m) a = {}; setmetatable(a, {__mode = m}); a[1], a[2], a[3] = {}, {}, {}; for k, v in pairs(a) do print(k, v) end end print('ok') ``` --- src/core/org/luaj/vm2/LuaTable.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/org/luaj/vm2/LuaTable.java b/src/core/org/luaj/vm2/LuaTable.java index 9aa8f065..7f98b56c 100644 --- a/src/core/org/luaj/vm2/LuaTable.java +++ b/src/core/org/luaj/vm2/LuaTable.java @@ -472,7 +472,7 @@ public class LuaTable extends LuaValue implements Metatable { } } if ( checkLoadFactor() ) { - if ( (m_metatable == null || !(m_metatable.useWeakKeys() || m_metatable.useWeakValues())) + if ( (m_metatable == null || !m_metatable.useWeakValues()) && key.isinttype() && key.toint() > 0 ) { // a rehash might make room in the array portion for this key. rehash( key.toint() );