mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-05-04 20:46:11 +02:00
BUG/MEDIUM: lua: memory leak
The priv context is not cleaned when we set a new priv context. This is caused by a stupid swap between two parameter of the luaL_unref() function. workaround: use set_priv only once when we process a stream. This patch should be backported in version 1.7 and 1.6
This commit is contained in:
parent
013a84fe93
commit
f326767711
@ -3310,7 +3310,7 @@ __LJMP static int hlua_applet_tcp_set_priv(lua_State *L)
|
||||
|
||||
/* Remove previous value. */
|
||||
if (hlua->Mref != -1)
|
||||
luaL_unref(L, hlua->Mref, LUA_REGISTRYINDEX);
|
||||
luaL_unref(L, LUA_REGISTRYINDEX, hlua->Mref);
|
||||
|
||||
/* Get and store new value. */
|
||||
lua_pushvalue(L, 2); /* Copy the element 2 at the top of the stack. */
|
||||
@ -3773,7 +3773,7 @@ __LJMP static int hlua_applet_http_set_priv(lua_State *L)
|
||||
|
||||
/* Remove previous value. */
|
||||
if (hlua->Mref != -1)
|
||||
luaL_unref(L, hlua->Mref, LUA_REGISTRYINDEX);
|
||||
luaL_unref(L, LUA_REGISTRYINDEX, hlua->Mref);
|
||||
|
||||
/* Get and store new value. */
|
||||
lua_pushvalue(L, 2); /* Copy the element 2 at the top of the stack. */
|
||||
@ -4860,7 +4860,7 @@ __LJMP static int hlua_set_priv(lua_State *L)
|
||||
|
||||
/* Remove previous value. */
|
||||
if (hlua->Mref != -1)
|
||||
luaL_unref(L, hlua->Mref, LUA_REGISTRYINDEX);
|
||||
luaL_unref(L, LUA_REGISTRYINDEX, hlua->Mref);
|
||||
|
||||
/* Get and store new value. */
|
||||
lua_pushvalue(L, 2); /* Copy the element 2 at the top of the stack. */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user