summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormdroe <mdroe@localhost>2009-12-15 19:14:07 +0000
committermdroe <mdroe@localhost>2009-12-15 19:14:07 +0000
commita50b6a324c73e46aab144d99d30cd955a9ebc636 (patch)
tree62fbd88f30d6741b4899408a5fbf6e9cdc623829
parent9a0619787db3c7958799e74fb529a73d92c08f6a (diff)
downloadnumpy-a50b6a324c73e46aab144d99d30cd955a9ebc636.tar.gz
Backport of 8014: Don't segfault if fromfile reading is somehow faulty
-rw-r--r--numpy/core/src/multiarray/ctors.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/numpy/core/src/multiarray/ctors.c b/numpy/core/src/multiarray/ctors.c
index 7966874b5..f381d2879 100644
--- a/numpy/core/src/multiarray/ctors.c
+++ b/numpy/core/src/multiarray/ctors.c
@@ -968,7 +968,7 @@ setArrayFromSequence(PyArrayObject *a, PyObject *s, int dim, intp offset)
}
offset += a->strides[dim];
}
-
+
Py_DECREF(s);
return 0;
@@ -2774,7 +2774,7 @@ PyArray_ArangeObj(PyObject *start, PyObject *stop, PyObject *step, PyArray_Descr
/* calculate the length and next = start + step*/
length = _calc_length(start, stop, step, &next,
PyTypeNum_ISCOMPLEX(dtype->type_num));
- err = PyErr_Occurred();
+ err = PyErr_Occurred();
if (err) {
Py_DECREF(dtype);
if (err && PyErr_GivenExceptionMatches(err, PyExc_OverflowError)) {
@@ -3030,6 +3030,10 @@ PyArray_FromFile(FILE *fp, PyArray_Descr *dtype, intp num, char *sep)
(next_element) fromfile_next_element,
(skip_separator) fromfile_skip_separator, NULL);
}
+ if (ret == NULL) {
+ Py_DECREF(dtype);
+ return NULL;
+ }
if (((intp) nread) < num) {
/* Realloc memory for smaller number of elements */
const size_t nsize = NPY_MAX(nread,1)*ret->descr->elsize;