Fix dangling c pointer to lua string value

Lua string object referenced by C pointer from lua_tolstring() was
removed from stack by lua_settop(L,0).

Lua 5.3 Reference Manual says:

> Because Lua has garbage collection, there is no guarantee that the
> pointer returned by lua_tolstring will be valid after the
> corresponding Lua value is removed from the stack.

That is it.

Introduced in commit 9937081854.
This commit is contained in:
Kezhu Wang
2015-12-14 15:17:40 +08:00
parent ccb9cdbc9d
commit bfe8eeb4b3

View File

@@ -572,7 +572,7 @@ _luaseri_unpack(lua_State *L) {
return luaL_error(L, "deserialize null pointer"); return luaL_error(L, "deserialize null pointer");
} }
lua_settop(L,0); lua_settop(L,1);
struct read_block rb; struct read_block rb;
rball_init(&rb, buffer, len); rball_init(&rb, buffer, len);
@@ -591,7 +591,7 @@ _luaseri_unpack(lua_State *L) {
// Need not free buffer // Need not free buffer
return lua_gettop(L); return lua_gettop(L) - 1;
} }
int int