sem ver a funcao 'completa' nao da pra dar pitaco, porem, segue abaixo um exemplo de como "tratar" erro
$ ./teste.exe teste1.lua
!! luaL_dofile() teste1.lua:2: attempt to perform arithmetic on global 'a' (a nil value)n
#include <stdio.h>
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
#include <assert.h>
int main(int argc, char **argv)
{
lua_State *LUAVM = NULL;
const char *filename = NULL;
assert(argc == 2);
filename = argv[1];
LUAVM = luaL_newstate();
assert(LUAVM);
lua_gc(LUAVM, LUA_GCSTOP, 0);
luaL_openlibs(LUAVM);
lua_gc(LUAVM, LUA_GCRESTART, 0);
if (luaL_dofile( LUAVM, filename) ) {
lua_gc(LUAVM, LUA_GCCOLLECT, 0);
printf("!! luaL_dofile() %sn", lua_tostring(LUAVM, -1));
lua_close(LUAVM);
return 1;
}
lua_close(LUAVM);
return 0;
}
===