From e11ca4d8afc3e412f530ccd55657b401294387ea Mon Sep 17 00:00:00 2001 From: Travis Oliphant Date: Tue, 28 Feb 2006 07:54:11 +0000 Subject: Fix tests and segfault in set_strides. --- numpy/core/src/arrayobject.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'numpy/core/src/arrayobject.c') diff --git a/numpy/core/src/arrayobject.c b/numpy/core/src/arrayobject.c index 7530eba4a..eed01f93a 100644 --- a/numpy/core/src/arrayobject.c +++ b/numpy/core/src/arrayobject.c @@ -4325,8 +4325,8 @@ array_strides_set(PyArrayObject *self, PyObject *obj) { PyArray_Dims newstrides = {NULL, 0}; PyArrayObject *new; - intp numbytes=-1; - intp offset; + intp numbytes=0; + intp offset=0; int buf_len; char *buf; @@ -4341,15 +4341,15 @@ array_strides_set(PyArrayObject *self, PyObject *obj) goto fail; } new = self; - offset = 0; - while(PyArray_Check(new->base)) { + while(new->base && PyArray_Check(new->base)) { new = (PyArrayObject *)(new->base); } /* Get the available memory through the buffer interface on new->base or if that fails from the current new */ - if (PyObject_AsReadBuffer(new->base, (const void **)&buf, - &buf_len) >= 0) { + if (new->base && PyObject_AsReadBuffer(new->base, + (const void **)&buf, + &buf_len) >= 0) { offset = self->data - buf; numbytes = buf_len + offset; } @@ -4361,7 +4361,7 @@ array_strides_set(PyArrayObject *self, PyObject *obj) } if (!PyArray_CheckStrides(self->descr->elsize, self->nd, numbytes, - self->data - new->data, + offset, self->dimensions, newstrides.ptr)) { PyErr_SetString(PyExc_ValueError, "strides is not "\ "compatible with available memory"); -- cgit v1.2.1