From 8dadb887e855328b3c49c2dbcfde2b0bf3f4811b Mon Sep 17 00:00:00 2001 From: Qiu Yuzhou Date: Mon, 29 Jul 2013 16:36:15 +0800 Subject: [PATCH] Fix bug in function "table_is_an_array". --- lua_cmsgpack.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lua_cmsgpack.c b/lua_cmsgpack.c index 9061213..4fa1f53 100644 --- a/lua_cmsgpack.c +++ b/lua_cmsgpack.c @@ -379,14 +379,15 @@ static int table_is_an_array(lua_State *L) { idx = n; if (idx != n || idx < 1) goto not_array; count++; - max = idx; + if ( max < idx ) + max = idx; } /* We have the total number of elements in "count". Also we have - * the max index encountered in "idx". We can't reach this code + * the max index encountered in "max". We can't reach this code * if there are indexes <= 0. If you also note that there can not be - * repeated keys into a table, you have that if idx==count you are sure + * repeated keys into a table, you have that if max==count you are sure * that there are all the keys form 1 to count (both included). */ - return idx == count; + return max == count; not_array: lua_pop(L,1);