tuple: pass global ibuf explicitly where possible
Code in lua/tuple.c used global tarantool_lua_ibuf in many places relying on it never being changed and not reused by other code until a yield. But it is not so. In fact, as it was discovered in #5632, in any Lua function may be started GC. Any GC handler might touch some API also using tarantool_lua_ibuf inside. This makes the first usage in lua/tuple.c invalid - the buffer could be reset or reallocated or its wpos/rpos could change during GC. In order to fix this, first of all there should be clear points where the buffer is taken, and where it becomes not needed anymore. The patch makes code in lua/tuple.c take tarantool_lua_ibuf when it is needed first time. Not during usage. The same is done for the fiber region for the API symmetry. Part of #5632
Loading
Please register or sign in to comment