0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 8.2.1150: ml_get error when using Python

Problem:    ml_get error when using Python. (Yegappan Lakshmanan)
Solution:   Check the line number is not out of range.  Call "Check" with
            "fromObj" instead of "from".
This commit is contained in:
Bram Moolenaar
2020-07-07 20:12:54 +02:00
parent 007f9d6ed5
commit bb790dcc46
4 changed files with 24 additions and 17 deletions

View File

@@ -3374,7 +3374,7 @@ OptionsItem(OptionsObject *self, PyObject *keyObject)
char_u *stringval;
PyObject *todecref;
if (self->Check(self->from))
if (self->Check(self->fromObj))
return NULL;
if (!(key = StringToChars(keyObject, &todecref)))
@@ -3565,7 +3565,7 @@ OptionsAssItem(OptionsObject *self, PyObject *keyObject, PyObject *valObject)
int ret = 0;
PyObject *todecref;
if (self->Check(self->from))
if (self->Check(self->fromObj))
return -1;
if (!(key = StringToChars(keyObject, &todecref)))
@@ -4334,10 +4334,15 @@ GetBufferLineList(buf_T *buf, PyInt lo, PyInt hi)
for (i = 0; i < n; ++i)
{
PyObject *string = LineToString(
(char *)ml_get_buf(buf, (linenr_T)(lo+i), FALSE));
linenr_T lnum = (linenr_T)(lo + i);
char *text;
PyObject *string;
// Error check - was the Python string creation OK?
if (lnum > buf->b_ml.ml_line_count)
text = "";
else
text = (char *)ml_get_buf(buf, lnum, FALSE);
string = LineToString(text);
if (string == NULL)
{
Py_DECREF(list);