diff -Nur Numeric-24.2.orig/Src/arrayobject.c Numeric-24.2/Src/arrayobject.c --- Numeric-24.2.orig/Src/arrayobject.c 2007-09-02 14:12:11.000000000 +0100 +++ Numeric-24.2/Src/arrayobject.c 2007-09-02 14:12:42.000000000 +0100 @@ -491,7 +491,8 @@ static PyObject * PyArray_Resize(PyArrayObject *self, PyObject *shape) { size_t oldsize, newsize; - int new_nd, k, sd, n, elsize; + int sd, n, elsize; + Py_ssize_t new_nd, k; int refcnt; int new_dimensions[MAX_DIMS]; int new_strides[MAX_DIMS]; @@ -708,7 +709,7 @@ } static PyObject * -array_slice(PyArrayObject *self, int ilow, int ihigh) +array_slice(PyArrayObject *self, Py_ssize_t ilow, Py_ssize_t ihigh) { PyArrayObject *r; int l; @@ -776,7 +777,7 @@ if ((item = index2ptr(self, i)) == NULL) return -1; - if(self->descr->type_num != PyArray_OBJECT && PyString_Check(v) && PyObject_Length(v) == 1) { + if(self->descr->type_num != PyArray_OBJECT && PyString_Check(v) && PyObject_Length(v) == (Py_ssize_t)1) { char *s; if ((s=PyString_AsString(v)) == NULL) return -1; if(self->descr->type == 'c') { @@ -823,7 +824,7 @@ /* This is basically PySlice_GetIndicesEx, but with our coercion * of indices to integers (plus, that function is new in Python 2.3) */ -static int +static Py_ssize_t slice_GetIndices(PySliceObject *r, int length, int *start, int *stop, int *step, int *slicelength) @@ -925,8 +926,8 @@ static int parse_index(PyArrayObject *self, PyObject *op, int *dimensions, int *strides, int *offset_ptr) { - int i, j, n; - int nd_old, nd_new, start, offset, n_add, n_pseudo; + Py_ssize_t i, n, j, n_add, n_pseudo; + int nd_old, nd_new, start, offset; int step_size, n_steps; PyObject *op1=NULL; int is_slice; @@ -1098,7 +1099,7 @@ } static PyMappingMethods array_as_mapping = { - (inquiry)array_length, /*mp_length*/ + (lenfunc)array_length, /*mp_length*/ (binaryfunc)array_subscript_nice, /*mp_subscript*/ (objobjargproc)array_ass_sub, /*mp_ass_subscript*/ }; @@ -1183,10 +1184,10 @@ } static PyBufferProcs array_as_buffer = { - (getreadbufferproc)array_getreadbuf, /*bf_getreadbuffer*/ - (getwritebufferproc)array_getwritebuf, /*bf_getwritebuffer*/ - (getsegcountproc)array_getsegcount, /*bf_getsegcount*/ - (getcharbufferproc)array_getcharbuf, /*bf_getcharbuffer*/ + (readbufferproc)array_getreadbuf, /*bf_getreadbuffer*/ + (writebufferproc)array_getwritebuf, /*bf_getwritebuffer*/ + (segcountproc)array_getsegcount, /*bf_getsegcount*/ + (charbufferproc)array_getcharbuf, /*bf_getcharbuffer*/ }; /* End methods added by Scott N. Gunyan for buffer extension */ @@ -1595,7 +1596,7 @@ (unaryfunc)array_negative, (unaryfunc)PyArray_Copy, /*nb_pos*/ (unaryfunc)array_absolute, /*(unaryfunc)array_abs,*/ - (inquiry)array_nonzero, /*nb_nonzero*/ + (lenfunc)array_nonzero, /*nb_nonzero*/ (unaryfunc)array_invert, /*nb_invert*/ (binaryfunc)array_left_shift, /*nb_lshift*/ (binaryfunc)array_right_shift, /*nb_rshift*/ @@ -1634,13 +1635,13 @@ }; static PySequenceMethods array_as_sequence = { - (inquiry)array_length, /*sq_length*/ + (lenfunc)array_length, /*sq_length*/ (binaryfunc)NULL, /*nb_add, concat is numeric add*/ - (intargfunc)NULL, /*nb_multiply, repeat is numeric multiply*/ - (intargfunc)array_item_nice, /*sq_item*/ - (intintargfunc)array_slice, /*sq_slice*/ - (intobjargproc)array_ass_item, /*sq_ass_item*/ - (intintobjargproc)array_ass_slice, /*sq_ass_slice*/ + (ssizeargfunc)NULL, /*nb_multiply, repeat is numeric multiply*/ + (ssizeargfunc)array_item_nice, /*sq_item*/ + (ssizessizeargfunc)array_slice, /*sq_slice*/ + (ssizeobjargproc)array_ass_item, /*sq_ass_item*/ + (ssizessizeobjargproc)array_ass_slice, /*sq_ass_slice*/ }; /* -------------------------------------------------------------- */ @@ -2426,7 +2427,7 @@ #if PY_VERSION_HEX >= 0x02010000 (traverseproc)0L, - (inquiry)0L, + (lenfunc)0L, (richcmpfunc)array_richcompare, /*tp_richcompfunc*/ offsetof(PyArrayObject, weakreflist), /*tp_weaklistoffset */ #endif @@ -2463,7 +2464,8 @@ static int discover_dimensions(PyObject *s, int nd, int *d, int check_it) { PyObject *e; - int r, n, i, n_lower; + int r, n_lower; + Py_ssize_t i, n; n=PyObject_Length(s); *d = n; @@ -2501,7 +2503,7 @@ static int array_objecttype(PyObject *op, int minimum_type, int savespaceflag, int max) { - int l; + Py_ssize_t l; PyObject *ip; int result; PyArray_Descr* descr; @@ -2593,7 +2595,9 @@ static int Assign_Array(PyArrayObject *self, PyObject *v) { PyObject *e; - int l, r; + int r; + Py_ssize_t l; + if (!PySequence_Check(v)) { PyErr_SetString(PyExc_ValueError,"assignment from non-sequence"); diff -Nur Numeric-24.2.orig/Src/multiarraymodule.c Numeric-24.2/Src/multiarraymodule.c --- Numeric-24.2.orig/Src/multiarraymodule.c 2007-09-02 14:12:11.000000000 +0100 +++ Numeric-24.2/Src/multiarraymodule.c 2007-09-02 14:12:42.000000000 +0100 @@ -36,7 +36,8 @@ extern PyObject *PyArray_Concatenate(PyObject *op) { PyArrayObject *ret, **mps; PyObject *otmp; - int i, n, type_num, tmp, nd=0, new_dim; + int type_num, tmp, nd=0, new_dim; + Py_ssize_t i, n; char *data; n = PySequence_Length(op); @@ -284,7 +285,8 @@ extern PyObject *PyArray_Choose(PyObject *ip, PyObject *op) { - int i, n, *sizes, m, offset, elsize, type_num; + int *sizes, elsize, type_num; + Py_ssize_t i, n, m, offset; char *ret_data; PyArrayObject **mps, *ap, *ret; PyObject *otmp; @@ -1139,7 +1141,8 @@ static char *kwlist[] = {"shape", "typecode", "savespace", NULL}; PyObject *op; PyArray_Descr *descr; - int i, nd, n, dims[MAX_DIMS]; + int dims[MAX_DIMS]; + Py_ssize_t i, nd, n; int sd; char *data; @@ -1217,7 +1220,8 @@ PyArrayObject *ret; char type_char='l'; char *type = &type_char, *dptr; - int i, nd, n, dimensions[MAX_DIMS]; + int dimensions[MAX_DIMS]; + Py_ssize_t i, nd, n; int savespace=0; static char all_zero[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; static char *kwlist[] = {"shape", "typecode", "savespace", NULL}; diff -Nur Numeric-24.2.orig/Src/ufuncobject.c Numeric-24.2/Src/ufuncobject.c --- Numeric-24.2.orig/Src/ufuncobject.c 2007-09-02 14:12:11.000000000 +0100 +++ Numeric-24.2/Src/ufuncobject.c 2007-09-02 14:12:42.000000000 +0100 @@ -272,7 +272,7 @@ int setup_matrices(PyUFuncObject *self, PyObject *args, PyUFuncGenericFunction *function, void **data, PyArrayObject **mps, char *arg_types) { - int nargs, i; + Py_ssize_t nargs, i; nargs = PyTuple_Size(args); if ((nargs != self->nin) && (nargs != self->nin+self->nout)) {