ports/emulators/gw-libretro/patches/patch-gwlua_gwlua_c

27 lines
743 B
Text
Raw Normal View History

2023-08-16 22:26:55 +00:00
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;
}