diff --git a/src/box/box_lua.m b/src/box/box_lua.m index c4f87b36fb7eb634275c4f9a00c454de0db15073..151694cd2199db99728b11d27edba7b79e6ff8a6 100644 --- a/src/box/box_lua.m +++ b/src/box/box_lua.m @@ -452,8 +452,9 @@ lbox_tuple_index(struct lua_State *L) return 1; } /* If we got a string, try to find a method for it. */ + const char *sz = luaL_checkstring(L, 2); lua_getmetatable(L, 1); - lua_getfield(L, -1, lua_tostring(L, 2)); + lua_getfield(L, -1, sz); return 1; } diff --git a/test/box/lua.result b/test/box/lua.result index 5ee7f36e844f01957c4a2f593cadecf156b588f1..dd6510fab9fee6ccc353257aedd3ac2065c1cea5 100644 --- a/test/box/lua.result +++ b/test/box/lua.result @@ -1783,3 +1783,11 @@ lua t[2], t[3], t[4], t[5] lua box.space[0]:truncate() --- ... +# A test case for Bug#1119389 '(lbox_tuple_index) crashes on 'nil' argument' +lua t=box.insert(0, 8989) +--- +... +lua t[nil] +--- +error: '[string "return t[nil]"]:1: bad argument #2 to ''__index'' (string expected, got nil)' +... diff --git a/test/box/lua.test b/test/box/lua.test index 3f7f9851f590edc390ace33dc0195c83d5efe680..8b1812014d617f0d2f5eeb7a53c4eb89504c6e0a 100644 --- a/test/box/lua.test +++ b/test/box/lua.test @@ -593,3 +593,6 @@ print """# A test case for tuple:totable() method""" exec admin "lua t=box.select(0, 0, 777):totable()" exec admin "lua t[2], t[3], t[4], t[5]" exec admin "lua box.space[0]:truncate()" +print """# A test case for Bug#1119389 '(lbox_tuple_index) crashes on 'nil' argument'""" +exec admin "lua t=box.insert(0, 8989)" +exec admin "lua t[nil]"