aboutsummaryrefslogtreecommitdiff
path: root/lua_cjson.c
diff options
context:
space:
mode:
authorMark Pulford <mark@kyne.com.au>2011-08-10 19:39:52 +0930
committerMark Pulford <mark@kyne.com.au>2011-08-10 19:39:52 +0930
commit386fdad6820fefa77355ed330f3072a5e2a4bd3e (patch)
tree2b72bae1be543dc1116eb512d50f1fa5731ed44e /lua_cjson.c
parente5ee37f77f029f4df68a0fc92fc7a79c9f8af210 (diff)
downloadlua-cjson-386fdad6820fefa77355ed330f3072a5e2a4bd3e.tar.gz
lua-cjson-386fdad6820fefa77355ed330f3072a5e2a4bd3e.tar.bz2
lua-cjson-386fdad6820fefa77355ed330f3072a5e2a4bd3e.zip
Fix detection of objects with numeric string keys
lua_array_length() recognised some objects with numeric string keys as arrays since it was incorrectly using lua_isnumber(). When an object was incorrectly recognised as an array, json_append_array() would not find any entries and generate a result like: [null,null,...] Reported by: Zhang "agentzh" Yichun <agentzh@gmail.com>
Diffstat (limited to 'lua_cjson.c')
-rw-r--r--lua_cjson.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/lua_cjson.c b/lua_cjson.c
index 4b1915a..b46e915 100644
--- a/lua_cjson.c
+++ b/lua_cjson.c
@@ -501,7 +501,7 @@ static int lua_array_length(lua_State *l, json_config_t *cfg)
501 /* table, startkey */ 501 /* table, startkey */
502 while (lua_next(l, -2) != 0) { 502 while (lua_next(l, -2) != 0) {
503 /* table, key, value */ 503 /* table, key, value */
504 if (lua_isnumber(l, -2) && 504 if (lua_type(l, -2) == LUA_TNUMBER &&
505 (k = lua_tonumber(l, -2))) { 505 (k = lua_tonumber(l, -2))) {
506 /* Integer >= 1 ? */ 506 /* Integer >= 1 ? */
507 if (floor(k) == k && k >= 1) { 507 if (floor(k) == k && k >= 1) {