updated for version 7.3.942
Problem: Python: SEGV in Buffer functions.
Solution: Call CheckBuffer() at the right time. (ZyX)
diff --git a/src/if_py_both.h b/src/if_py_both.h
index d8b0f70..681b7a1 100644
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -2391,6 +2391,9 @@
if (CheckBuffer(self))
return NULL;
+ if (end == -1)
+ end = self->buf->b_ml.ml_line_count;
+
if (n < 0 || n > end - start)
{
PyErr_SetString(PyExc_IndexError, _("line number out of range"));
@@ -2408,6 +2411,9 @@
if (CheckBuffer(self))
return NULL;
+ if (end == -1)
+ end = self->buf->b_ml.ml_line_count;
+
size = end - start + 1;
if (lo < 0)
@@ -2432,6 +2438,9 @@
if (CheckBuffer(self))
return -1;
+ if (end == -1)
+ end = self->buf->b_ml.ml_line_count;
+
if (n < 0 || n > end - start)
{
PyErr_SetString(PyExc_IndexError, _("line number out of range"));
@@ -2457,6 +2466,9 @@
if (CheckBuffer(self))
return -1;
+ if (end == -1)
+ end = self->buf->b_ml.ml_line_count;
+
/* Sort out the slice range */
size = end - start + 1;
@@ -2493,6 +2505,9 @@
if (CheckBuffer(self))
return NULL;
+ if (end == -1)
+ end = self->buf->b_ml.ml_line_count;
+
max = n = end - start + 1;
if (!PyArg_ParseTuple(args, "O|n", &lines, &n))
@@ -2700,15 +2715,13 @@
static PyObject *
BufferItem(PyObject *self, PyInt n)
{
- return RBItem((BufferObject *)(self), n, 1,
- (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count);
+ return RBItem((BufferObject *)(self), n, 1, -1);
}
static PyObject *
BufferSlice(PyObject *self, PyInt lo, PyInt hi)
{
- return RBSlice((BufferObject *)(self), lo, hi, 1,
- (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count);
+ return RBSlice((BufferObject *)(self), lo, hi, 1, -1);
}
static PyObject *
@@ -2732,9 +2745,7 @@
static PyObject *
BufferAppend(PyObject *self, PyObject *args)
{
- return RBAppend((BufferObject *)(self), args, 1,
- (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count,
- NULL);
+ return RBAppend((BufferObject *)(self), args, 1, -1, NULL);
}
static PyObject *