From f5d2813319d7ad84270607a083e8000694541724 Mon Sep 17 00:00:00 2001 From: mitchell <70453897+667e-11@users.noreply.github.com> Date: Wed, 6 Jun 2012 21:33:56 -0400 Subject: Check for `args` and `args.process()` in single instance; src/textadept.c --- src/textadept.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/textadept.c b/src/textadept.c index b8a1ea5b..4772121e 100644 --- a/src/textadept.c +++ b/src/textadept.c @@ -205,15 +205,20 @@ static int a_command_line(GApplication *app, GApplicationCommandLine *cmdline, int argc = 0; char **argv = g_application_command_line_get_arguments(cmdline, &argc); if (argc > 1) { - lua_getglobal(lua, "args"), lua_getfield(lua, -1, "process"); - lua_newtable(lua); - const char *cwd = g_application_command_line_get_cwd(cmdline); - lua_pushstring(lua, cwd ? cwd : ""), lua_rawseti(lua, -2, -1); - for (int i = 0; i < argc; i++) - lua_pushstring(lua, argv[i]), lua_rawseti(lua, -2, i); - if (lua_pcall(lua, 1, 0, 0) != LUA_OK) { - lL_event(lua, "error", LUA_TSTRING, lua_tostring(lua, -1), -1); - lua_pop(lua, 1); // error message + lua_getglobal(lua, "args"); + if (lua_istable(lua, -1)) { + lua_getfield(lua, -1, "process"); + if (lua_isfunction(lua, -1)) { + lua_newtable(lua); + const char *cwd = g_application_command_line_get_cwd(cmdline); + lua_pushstring(lua, cwd ? cwd : ""), lua_rawseti(lua, -2, -1); + for (int i = 0; i < argc; i++) + lua_pushstring(lua, argv[i]), lua_rawseti(lua, -2, i); + if (lua_pcall(lua, 1, 0, 0) != LUA_OK) { + lL_event(lua, "error", LUA_TSTRING, lua_tostring(lua, -1), -1); + lua_pop(lua, 1); // error message + } + } else lua_pop(lua, 1); // non-function } lua_pop(lua, 1); // args } -- cgit v1.2.3