27 lines
743 B
Text
27 lines
743 B
Text
|
Fix invalid memory issues.
|
||
|
From upstream 9a924cea028f17d3be3499f1530abc14d9071983.
|
||
|
|
||
|
Index: gwlua/gwlua.c
|
||
|
--- gwlua/gwlua.c.orig
|
||
|
+++ gwlua/gwlua.c
|
||
|
@@ -35,12 +35,17 @@ static int l_traceback( lua_State* L )
|
||
|
|
||
|
static int l_pcall( lua_State* L, int nargs, int nres )
|
||
|
{
|
||
|
+ int errndx = lua_gettop( L ) - nargs;
|
||
|
lua_pushcfunction( L, l_traceback );
|
||
|
- lua_insert( L, -nargs - 2 );
|
||
|
+ lua_insert( L, errndx );
|
||
|
|
||
|
- if ( lua_pcall( L, nargs, nres, -nargs - 2 ) != LUA_OK )
|
||
|
+ int ret = lua_pcall( L, nargs, nres, errndx );
|
||
|
+ lua_remove(L, errndx);
|
||
|
+
|
||
|
+ if ( ret != LUA_OK )
|
||
|
{
|
||
|
gwlua_log( "\n==============================\n%s\n------------------------------\n", lua_tostring( L, -1 ) );
|
||
|
+ lua_pop( L, 1 );
|
||
|
return -1;
|
||
|
}
|
||
|
|