mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
updated for version 7.4.107
Problem: Python: When vim.eval() encounters a Vim error, a try/catch in the Python code doesn't catch it. (Yggdroot Chen) Solution: Throw exceptions on errors in vim.eval(). (ZyX)
This commit is contained in:
@@ -566,6 +566,28 @@ VimTryEnd(void)
|
||||
PyErr_SetNone(PyExc_KeyboardInterrupt);
|
||||
return -1;
|
||||
}
|
||||
else if (msg_list != NULL && *msg_list != NULL)
|
||||
{
|
||||
int should_free;
|
||||
char_u *msg;
|
||||
|
||||
msg = get_exception_string(*msg_list, ET_ERROR, NULL, &should_free);
|
||||
|
||||
if (msg == NULL)
|
||||
{
|
||||
PyErr_NoMemory();
|
||||
return -1;
|
||||
}
|
||||
|
||||
PyErr_SetVim((char *) msg);
|
||||
|
||||
free_global_msglist();
|
||||
|
||||
if (should_free)
|
||||
vim_free(msg);
|
||||
|
||||
return -1;
|
||||
}
|
||||
else if (!did_throw)
|
||||
return (PyErr_Occurred() ? -1 : 0);
|
||||
/* Python exception is preferred over vim one; unlikely to occur though */
|
||||
|
Reference in New Issue
Block a user