0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

updated for version 7.3.1064

Problem:    Python: insufficient error checking.
Solution:   Python patch 23. (ZyX)
This commit is contained in:
Bram Moolenaar
2013-05-30 13:17:17 +02:00
parent 355fd9b468
commit 494ff7e850
2 changed files with 21 additions and 12 deletions

View File

@@ -3304,10 +3304,10 @@ SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, PyInt *len_cha
for (i = 0; i < new_len; ++i) for (i = 0; i < new_len; ++i)
{ {
PyObject *line = PyList_GetItem(list, i); PyObject *line;
array[i] = StringToLine(line); if (!(line = PyList_GetItem(list, i)) ||
if (array[i] == NULL) !(array[i] = StringToLine(line)))
{ {
while (i) while (i)
vim_free(array[--i]); vim_free(array[--i]);
@@ -3319,7 +3319,7 @@ SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, PyInt *len_cha
VimTryStart(); VimTryStart();
PyErr_Clear(); PyErr_Clear();
// START of region without "return". Must call restore_buffer()! /* START of region without "return". Must call restore_buffer()! */
switch_buffer(&savebuf, buf); switch_buffer(&savebuf, buf);
if (u_save((linenr_T)(lo-1), (linenr_T)hi) == FAIL) if (u_save((linenr_T)(lo-1), (linenr_T)hi) == FAIL)
@@ -3400,7 +3400,7 @@ SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, PyInt *len_cha
if (buf == savebuf) if (buf == savebuf)
py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)extra); py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)extra);
// END of region without "return". /* END of region without "return". */
restore_buffer(savebuf); restore_buffer(savebuf);
if (VimTryEnd()) if (VimTryEnd())
@@ -3479,10 +3479,10 @@ InsertBufferLines(buf_T *buf, PyInt n, PyObject *lines, PyInt *len_change)
for (i = 0; i < size; ++i) for (i = 0; i < size; ++i)
{ {
PyObject *line = PyList_GetItem(lines, i); PyObject *line;
array[i] = StringToLine(line);
if (array[i] == NULL) if (!(line = PyList_GetItem(lines, i)) ||
!(array[i] = StringToLine(line)))
{ {
while (i) while (i)
vim_free(array[--i]); vim_free(array[--i]);
@@ -4014,8 +4014,15 @@ BufferMark(BufferObject *self, PyObject *args)
if (!PyArg_ParseTuple(args, "s", &pmark)) if (!PyArg_ParseTuple(args, "s", &pmark))
return NULL; return NULL;
mark = *pmark;
if (STRLEN(pmark) != 1)
{
PyErr_SetString(PyExc_ValueError,
_("mark name must be a single character"));
return NULL;
}
mark = *pmark;
VimTryStart(); VimTryStart();
switch_buffer(&savebuf, self->buf); switch_buffer(&savebuf, self->buf);
posp = getmark(mark, FALSE); posp = getmark(mark, FALSE);
@@ -4258,7 +4265,7 @@ CurrentSetattr(PyObject *self UNUSED, char *name, PyObject *value)
if (value->ob_type != &BufferType) if (value->ob_type != &BufferType)
{ {
PyErr_SetString(PyExc_TypeError, _("expected vim.buffer object")); PyErr_SetString(PyExc_TypeError, _("expected vim.Buffer object"));
return -1; return -1;
} }
@@ -4283,7 +4290,7 @@ CurrentSetattr(PyObject *self UNUSED, char *name, PyObject *value)
if (value->ob_type != &WindowType) if (value->ob_type != &WindowType)
{ {
PyErr_SetString(PyExc_TypeError, _("expected vim.window object")); PyErr_SetString(PyExc_TypeError, _("expected vim.Window object"));
return -1; return -1;
} }
@@ -4315,7 +4322,7 @@ CurrentSetattr(PyObject *self UNUSED, char *name, PyObject *value)
{ {
if (value->ob_type != &TabPageType) if (value->ob_type != &TabPageType)
{ {
PyErr_SetString(PyExc_TypeError, _("expected vim.tabpage object")); PyErr_SetString(PyExc_TypeError, _("expected vim.TabPage object"));
return -1; return -1;
} }

View File

@@ -728,6 +728,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1064,
/**/ /**/
1063, 1063,
/**/ /**/