diff options
Diffstat (limited to 'src/lib_table.c')
-rw-r--r-- | src/lib_table.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/lib_table.c b/src/lib_table.c index 8ae54167..fab6b1f4 100644 --- a/src/lib_table.c +++ b/src/lib_table.c | |||
@@ -82,8 +82,10 @@ LJLIB_CF(table_maxn) | |||
82 | } | 82 | } |
83 | node = noderef(t->node); | 83 | node = noderef(t->node); |
84 | for (i = (ptrdiff_t)t->hmask; i >= 0; i--) | 84 | for (i = (ptrdiff_t)t->hmask; i >= 0; i--) |
85 | if (tvisnum(&node[i].key) && numV(&node[i].key) > m) | 85 | if (tvisnumber(&node[i].key)) { |
86 | m = numV(&node[i].key); | 86 | lua_Number n = numberVnum(&node[i].key); |
87 | if (n > m) m = n; | ||
88 | } | ||
87 | setnumV(L->top-1, m); | 89 | setnumV(L->top-1, m); |
88 | return 1; | 90 | return 1; |
89 | } | 91 | } |
@@ -154,7 +156,7 @@ LJLIB_CF(table_concat) | |||
154 | cTValue *o; | 156 | cTValue *o; |
155 | lua_rawgeti(L, 1, i); | 157 | lua_rawgeti(L, 1, i); |
156 | o = L->top-1; | 158 | o = L->top-1; |
157 | if (!(tvisstr(o) || tvisnum(o))) | 159 | if (!(tvisstr(o) || tvisnumber(o))) |
158 | lj_err_callerv(L, LJ_ERR_TABCAT, typename(o), i); | 160 | lj_err_callerv(L, LJ_ERR_TABCAT, typename(o), i); |
159 | luaL_addvalue(&b); | 161 | luaL_addvalue(&b); |
160 | if (i++ == e) break; | 162 | if (i++ == e) break; |