diff options
Diffstat (limited to 'src/plugins/lua/weechat-lua.c')
-rw-r--r-- | src/plugins/lua/weechat-lua.c | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/src/plugins/lua/weechat-lua.c b/src/plugins/lua/weechat-lua.c index 86e01c4fb..e9425fa0a 100644 --- a/src/plugins/lua/weechat-lua.c +++ b/src/plugins/lua/weechat-lua.c @@ -160,9 +160,8 @@ weechat_lua_tohashtable (lua_State *interpreter, int index, int size, */ void * -weechat_lua_exec (struct t_plugin_script *script, lua_State *interpreter, - int ret_type, const char *function, const char *format, - void **argv) +weechat_lua_exec (struct t_plugin_script *script, int ret_type, + const char *function, const char *format, void **argv) { void *ret_value; int argc, i, *ret_i; @@ -170,12 +169,10 @@ weechat_lua_exec (struct t_plugin_script *script, lua_State *interpreter, struct t_plugin_script *old_lua_current_script; old_lua_current_interpreter = lua_current_interpreter; - lua_current_interpreter = script->interpreter; + if (script->interpreter) + lua_current_interpreter = script->interpreter; - if (!interpreter) - interpreter = lua_current_interpreter; - - lua_getglobal (interpreter, function); + lua_getglobal (lua_current_interpreter, function); old_lua_current_script = lua_current_script; lua_current_script = script; @@ -189,13 +186,14 @@ weechat_lua_exec (struct t_plugin_script *script, lua_State *interpreter, switch (format[i]) { case 's': /* string */ - lua_pushstring (interpreter, (char *)argv[i]); + lua_pushstring (lua_current_interpreter, (char *)argv[i]); break; case 'i': /* integer */ - lua_pushnumber (interpreter, *((int *)argv[i])); + lua_pushnumber (lua_current_interpreter, *((int *)argv[i])); break; case 'h': /* hash */ - weechat_lua_pushhashtable (interpreter, (struct t_hashtable *)argv[i]); + weechat_lua_pushhashtable (lua_current_interpreter, + (struct t_hashtable *)argv[i]); break; } } @@ -203,22 +201,22 @@ weechat_lua_exec (struct t_plugin_script *script, lua_State *interpreter, ret_value = NULL; - if (lua_pcall (interpreter, argc, 1, 0) == 0) + if (lua_pcall (lua_current_interpreter, argc, 1, 0) == 0) { if (ret_type == WEECHAT_SCRIPT_EXEC_STRING) { - ret_value = strdup ((char *) lua_tostring (interpreter, -1)); + ret_value = strdup ((char *) lua_tostring (lua_current_interpreter, -1)); } else if (ret_type == WEECHAT_SCRIPT_EXEC_INT) { ret_i = malloc (sizeof (*ret_i)); if (ret_i) - *ret_i = lua_tonumber (interpreter, -1); + *ret_i = lua_tonumber (lua_current_interpreter, -1); ret_value = ret_i; } else if (ret_type == WEECHAT_SCRIPT_EXEC_HASHTABLE) { - ret_value = weechat_lua_tohashtable (interpreter, -1, + ret_value = weechat_lua_tohashtable (lua_current_interpreter, -1, WEECHAT_SCRIPT_HASHTABLE_DEFAULT_SIZE, WEECHAT_HASHTABLE_STRING, WEECHAT_HASHTABLE_STRING); @@ -236,10 +234,10 @@ weechat_lua_exec (struct t_plugin_script *script, lua_State *interpreter, weechat_printf (NULL, weechat_gettext ("%s%s: error: %s"), weechat_prefix ("error"), LUA_PLUGIN_NAME, - lua_tostring (interpreter, -1)); + lua_tostring (lua_current_interpreter, -1)); } - lua_pop (interpreter, 1); + lua_pop (lua_current_interpreter, 1); lua_current_script = old_lua_current_script; lua_current_interpreter = old_lua_current_interpreter; @@ -498,7 +496,7 @@ weechat_lua_unload (struct t_plugin_script *script) if (script->shutdown_func && script->shutdown_func[0]) { - rc = (int *)weechat_lua_exec (script, NULL, + rc = (int *)weechat_lua_exec (script, WEECHAT_SCRIPT_EXEC_INT, script->shutdown_func, NULL, NULL); |