BUG/MINOR: hlua: fix reference leak in core.register_task()

In core.register_task(): we take a reference to the function passed as
argument in order to push it in the new coroutine substack.
However, once pushed in the substack: the reference is not useful
anymore and should be cleared.
Currently, this is not the case in hlua_register_task().

Explicitly dropping the reference once the function is pushed to the
coroutine's stack to prevent any reference leak (which could contribute
to resource shortage)

This may be backported to every stable versions.
Please note that this commit depends on "MINOR: hlua: add simple hlua reference handling API"
This commit is contained in:
Aurelien DARRAGON 2023-03-13 14:09:21 +01:00 committed by Christopher Faulet
parent 9ee0d04770
commit be58d6683c

View File

@ -8719,6 +8719,9 @@ static int hlua_register_task(lua_State *L)
/* Restore the function in the stack. */
lua_rawgeti(hlua->T, LUA_REGISTRYINDEX, ref);
/* function ref not needed anymore since it was pushed to the substack */
hlua_unref(L, ref);
hlua->nargs = 0;
/* Schedule task. */