0
0
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:
Bram Moolenaar
2013-11-28 17:04:43 +01:00
parent e88a5f3a2c
commit 9fee7d4729
8 changed files with 179 additions and 124 deletions

View File

@@ -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 */