diff --git a/src/plugins/scripts/lua/weechat-lua.c b/src/plugins/scripts/lua/weechat-lua.c index 5dd9a5059..f9e348103 100644 --- a/src/plugins/scripts/lua/weechat-lua.c +++ b/src/plugins/scripts/lua/weechat-lua.c @@ -2331,7 +2331,7 @@ weechat_lua_load (t_weechat_plugin *plugin, char *filename) plugin->print_server (plugin, "Lua warning: unable to redirect stdout and stderr"); - lua_current_script_filename = strdup (filename); + lua_current_script_filename = filename; if (luaL_loadfile (lua_current_interpreter, filename) != 0) { @@ -2363,9 +2363,7 @@ weechat_lua_load (t_weechat_plugin *plugin, char *filename) weechat_script_remove (plugin, &lua_scripts, lua_current_script); return 0; } - fclose (fp); - free (lua_current_script_filename); if (lua_current_script == NULL) { diff --git a/src/plugins/scripts/perl/weechat-perl.c b/src/plugins/scripts/perl/weechat-perl.c index 8ee96d9c8..b4f49fe5a 100644 --- a/src/plugins/scripts/perl/weechat-perl.c +++ b/src/plugins/scripts/perl/weechat-perl.c @@ -145,7 +145,9 @@ weechat_perl_exec (t_weechat_plugin *plugin, SAVETMPS; PUSHMARK(sp); - perl_current_script = script; + /* are we loading the script file ? */ + if (strcmp (function, "weechat_perl_load_eval_file") != 0) + perl_current_script = script; if (arg1) { @@ -1980,7 +1982,7 @@ weechat_perl_load (t_weechat_plugin *plugin, char *filename) return 0; } - perl_current_script_filename = strdup (filename); + perl_current_script_filename = filename; PERL_SET_CONTEXT (perl_current_interpreter); perl_construct (perl_current_interpreter); @@ -1991,9 +1993,6 @@ weechat_perl_load (t_weechat_plugin *plugin, char *filename) eval = weechat_perl_exec (plugin, &tempscript, SCRIPT_EXEC_INT, "weechat_perl_load_eval_file", filename, "", ""); - - free (perl_current_script_filename); - #endif if (eval == NULL) { diff --git a/src/plugins/scripts/python/weechat-python.c b/src/plugins/scripts/python/weechat-python.c index 027971edd..d3d649a0e 100644 --- a/src/plugins/scripts/python/weechat-python.c +++ b/src/plugins/scripts/python/weechat-python.c @@ -2053,8 +2053,8 @@ weechat_python_load (t_weechat_plugin *plugin, char *filename) plugin->print_server (plugin, "Python warning: unable to redirect stderr"); } - - python_current_script_filename = strdup (filename); + + python_current_script_filename = filename; if (PyRun_SimpleFile (fp, filename) != 0) { @@ -2077,7 +2077,6 @@ weechat_python_load (t_weechat_plugin *plugin, char *filename) if (PyErr_Occurred ()) PyErr_Print (); fclose (fp); - free (python_current_script_filename); if (python_current_script == NULL) { diff --git a/src/plugins/scripts/ruby/weechat-ruby.c b/src/plugins/scripts/ruby/weechat-ruby.c index 9ac4a237b..c685fbc46 100644 --- a/src/plugins/scripts/ruby/weechat-ruby.c +++ b/src/plugins/scripts/ruby/weechat-ruby.c @@ -2179,13 +2179,11 @@ weechat_ruby_load (t_weechat_plugin *plugin, char *filename) curModule = rb_define_module(modname); - ruby_current_script_filename = strdup (filename); + ruby_current_script_filename = filename; ruby_retcode = rb_protect_funcall (curModule, rb_intern("load_eval_file"), &ruby_error, 1, rb_str_new2(filename)); - free (ruby_current_script_filename); - if (ruby_retcode == Qnil) { err = rb_inspect(rb_gv_get("$!")); ruby_plugin->print_server (ruby_plugin, "Ruby error: \"%s\"", STR2CSTR(err)); diff --git a/weechat/src/plugins/scripts/lua/weechat-lua.c b/weechat/src/plugins/scripts/lua/weechat-lua.c index 5dd9a5059..f9e348103 100644 --- a/weechat/src/plugins/scripts/lua/weechat-lua.c +++ b/weechat/src/plugins/scripts/lua/weechat-lua.c @@ -2331,7 +2331,7 @@ weechat_lua_load (t_weechat_plugin *plugin, char *filename) plugin->print_server (plugin, "Lua warning: unable to redirect stdout and stderr"); - lua_current_script_filename = strdup (filename); + lua_current_script_filename = filename; if (luaL_loadfile (lua_current_interpreter, filename) != 0) { @@ -2363,9 +2363,7 @@ weechat_lua_load (t_weechat_plugin *plugin, char *filename) weechat_script_remove (plugin, &lua_scripts, lua_current_script); return 0; } - fclose (fp); - free (lua_current_script_filename); if (lua_current_script == NULL) { diff --git a/weechat/src/plugins/scripts/perl/weechat-perl.c b/weechat/src/plugins/scripts/perl/weechat-perl.c index 8ee96d9c8..b4f49fe5a 100644 --- a/weechat/src/plugins/scripts/perl/weechat-perl.c +++ b/weechat/src/plugins/scripts/perl/weechat-perl.c @@ -145,7 +145,9 @@ weechat_perl_exec (t_weechat_plugin *plugin, SAVETMPS; PUSHMARK(sp); - perl_current_script = script; + /* are we loading the script file ? */ + if (strcmp (function, "weechat_perl_load_eval_file") != 0) + perl_current_script = script; if (arg1) { @@ -1980,7 +1982,7 @@ weechat_perl_load (t_weechat_plugin *plugin, char *filename) return 0; } - perl_current_script_filename = strdup (filename); + perl_current_script_filename = filename; PERL_SET_CONTEXT (perl_current_interpreter); perl_construct (perl_current_interpreter); @@ -1991,9 +1993,6 @@ weechat_perl_load (t_weechat_plugin *plugin, char *filename) eval = weechat_perl_exec (plugin, &tempscript, SCRIPT_EXEC_INT, "weechat_perl_load_eval_file", filename, "", ""); - - free (perl_current_script_filename); - #endif if (eval == NULL) { diff --git a/weechat/src/plugins/scripts/python/weechat-python.c b/weechat/src/plugins/scripts/python/weechat-python.c index 027971edd..d3d649a0e 100644 --- a/weechat/src/plugins/scripts/python/weechat-python.c +++ b/weechat/src/plugins/scripts/python/weechat-python.c @@ -2053,8 +2053,8 @@ weechat_python_load (t_weechat_plugin *plugin, char *filename) plugin->print_server (plugin, "Python warning: unable to redirect stderr"); } - - python_current_script_filename = strdup (filename); + + python_current_script_filename = filename; if (PyRun_SimpleFile (fp, filename) != 0) { @@ -2077,7 +2077,6 @@ weechat_python_load (t_weechat_plugin *plugin, char *filename) if (PyErr_Occurred ()) PyErr_Print (); fclose (fp); - free (python_current_script_filename); if (python_current_script == NULL) { diff --git a/weechat/src/plugins/scripts/ruby/weechat-ruby.c b/weechat/src/plugins/scripts/ruby/weechat-ruby.c index 9ac4a237b..c685fbc46 100644 --- a/weechat/src/plugins/scripts/ruby/weechat-ruby.c +++ b/weechat/src/plugins/scripts/ruby/weechat-ruby.c @@ -2179,13 +2179,11 @@ weechat_ruby_load (t_weechat_plugin *plugin, char *filename) curModule = rb_define_module(modname); - ruby_current_script_filename = strdup (filename); + ruby_current_script_filename = filename; ruby_retcode = rb_protect_funcall (curModule, rb_intern("load_eval_file"), &ruby_error, 1, rb_str_new2(filename)); - free (ruby_current_script_filename); - if (ruby_retcode == Qnil) { err = rb_inspect(rb_gv_get("$!")); ruby_plugin->print_server (ruby_plugin, "Ruby error: \"%s\"", STR2CSTR(err));