File Imaging-1.1.7-ssize.patch of Package python-imaging
Index: _imaging.c
===================================================================
--- _imaging.c.orig
+++ _imaging.c
@@ -369,6 +369,7 @@ static void*
getlist(PyObject* arg, int* length, const char* wrong_length, int type)
{
int i, n;
+ Py_ssize_t s;
void* list;
if (!PySequence_Check(arg)) {
@@ -376,7 +377,8 @@ getlist(PyObject* arg, int* length, cons
return NULL;
}
- n = PyObject_Length(arg);
+ s = PyObject_Length(arg);
+ n = (s > INT_MAX) ? INT_MAX : s;
if (length && wrong_length && n != *length) {
PyErr_SetString(PyExc_ValueError, wrong_length);
return NULL;
@@ -1204,6 +1206,7 @@ _putdata(ImagingObject* self, PyObject*
{
Imaging image;
int n, i, x, y;
+ Py_ssize_t s;
PyObject* data;
double scale = 1.0;
@@ -1218,7 +1221,8 @@ _putdata(ImagingObject* self, PyObject*
image = self->image;
- n = PyObject_Length(data);
+ s = PyObject_Length(data);
+ n = (s > INT_MAX) ? INT_MAX : s;
if (n > (int) (image->xsize * image->ysize)) {
PyErr_SetString(PyExc_TypeError, "too many data entries");
return NULL;
@@ -3014,7 +3018,7 @@ image_item(ImagingObject *self, Py_ssize
}
static PySequenceMethods image_as_sequence = {
- (inquiry) image_length, /*sq_length*/
+ (lenfunc) image_length, /*sq_length*/
(binaryfunc) NULL, /*sq_concat*/
(ssizeargfunc) NULL, /*sq_repeat*/
(ssizeargfunc) image_item, /*sq_item*/
Index: path.c
===================================================================
--- path.c.orig
+++ path.c
@@ -116,6 +116,7 @@ int
PyPath_Flatten(PyObject* data, double **pxy)
{
int i, j, n;
+ Py_ssize_t s;
double *xy;
if (PyPath_Check(data)) {
@@ -149,7 +150,8 @@ PyPath_Flatten(PyObject* data, double **
}
j = 0;
- n = PyObject_Length(data);
+ s = PyObject_Length(data);
+ n = (s > INT_MAX) ? INT_MAX : s;
/* Just in case __len__ breaks (or doesn't exist) */
if (PyErr_Occurred())
return -1;
@@ -359,7 +361,7 @@ path_getbbox(PyPathObject* self, PyObjec
}
static PyObject*
-path_getitem(PyPathObject* self, int i)
+path_getitem(PyPathObject* self, Py_ssize_t i)
{
if (i < 0 || i >= self->count) {
PyErr_SetString(PyExc_IndexError, "path index out of range");
@@ -425,7 +427,7 @@ path_map(PyPathObject* self, PyObject* a
}
static int
-path_setitem(PyPathObject* self, int i, PyObject* op)
+path_setitem(PyPathObject* self, Py_ssize_t i, PyObject* op)
{
double* xy;