- fix a crash in ruby when a function return nothing (close bug #16552)

- add a warning when a function return nothing (python, ruby)
This commit is contained in:
Emmanuel Bouthenot 2006-05-08 20:22:42 +00:00
parent 93e69f5b3e
commit 5d08d5e27c
4 changed files with 28 additions and 4 deletions

View File

@ -91,14 +91,20 @@ weechat_python_exec (t_weechat_plugin *plugin,
else
rc = PyObject_CallFunction (evFunc, "");
if (rc == Py_None)
{
python_plugin->print_server (python_plugin, "Python error: function \"%s\" must return a valid value", function);
return PLUGIN_RC_OK;
}
if (rc)
{
ret = (int) PyInt_AsLong(rc);
Py_XDECREF(rc);
}
if (PyErr_Occurred ())
PyErr_Print ();
if (PyErr_Occurred ()) PyErr_Print ();
if (ret < 0)
return PLUGIN_RC_OK;

View File

@ -153,6 +153,12 @@ weechat_ruby_exec (t_weechat_plugin *plugin,
return PLUGIN_RC_KO;
}
if (ruby_retcode == Qnil)
{
ruby_plugin->print_server (ruby_plugin, "Ruby error: function \"%s\" must return a valid value", function);
return PLUGIN_RC_OK;
}
return NUM2INT(ruby_retcode);
}

View File

@ -91,14 +91,20 @@ weechat_python_exec (t_weechat_plugin *plugin,
else
rc = PyObject_CallFunction (evFunc, "");
if (rc == Py_None)
{
python_plugin->print_server (python_plugin, "Python error: function \"%s\" must return a valid value", function);
return PLUGIN_RC_OK;
}
if (rc)
{
ret = (int) PyInt_AsLong(rc);
Py_XDECREF(rc);
}
if (PyErr_Occurred ())
PyErr_Print ();
if (PyErr_Occurred ()) PyErr_Print ();
if (ret < 0)
return PLUGIN_RC_OK;

View File

@ -153,6 +153,12 @@ weechat_ruby_exec (t_weechat_plugin *plugin,
return PLUGIN_RC_KO;
}
if (ruby_retcode == Qnil)
{
ruby_plugin->print_server (ruby_plugin, "Ruby error: function \"%s\" must return a valid value", function);
return PLUGIN_RC_OK;
}
return NUM2INT(ruby_retcode);
}