8000 1.7.x backport by certik · Pull Request #472 · numpy/numpy · GitHub
[go: up one dir, main page]

Skip to content

1.7.x backport #472

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Oct 1, 2012
Next Next commit
BUG: PyErr_SetObject does not steal reference.
Closes "Ticket #2125" and "Ticket #2216"
  • Loading branch information
seberg authored and certik committed Sep 30, 2012
commit 486a36fbbc3d0408fca46fd21b2cf8e7184c0751
1 change: 1 addition & 0 deletions numpy/core/src/multiarray/array_assign.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ broadcast_error: {
PyUString_ConcatAndDel(&errmsg,
build_shape_string(ndim, shape));
PyErr_SetObject(PyExc_ValueError, errmsg);
Py_DECREF(errmsg);

return -1;
}
Expand Down
1 change: 1 addition & 0 deletions numpy/core/src/multiarray/array_assign_array.c
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,7 @@ PyArray_AssignArray(PyArrayObject *dst, PyArrayObject *src,
PyUString_FromFormat(" according to the rule %s",
npy_casting_to_string(casting)));
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);
goto fail;
}

Expand Down
1 change: 1 addition & 0 deletions numpy/core/src/multiarray/array_assign_scalar.c
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,7 @@ PyArray_AssignRawScalar(PyArrayObject *dst,
PyUString_FromFormat(" according to the rule %s",
npy_casting_to_string(casting)));
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);
return -1;
}

Expand Down
1 change: 1 addition & 0 deletions numpy/core/src/multiarray/ctors.c
Original file line number Diff line number Diff line change
Expand Up @@ -1818,6 +1818,7 @@ PyArray_FromArray(PyArrayObject *arr, PyArray_Descr *newtype, int flags)
PyUString_FromFormat(" according to the rule %s",
npy_casting_to_string(casting)));
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);

Py_DECREF(newtype);
return NULL;
Expand Down
5 changes: 5 additions & 0 deletions numpy/core/src/multiarray/datetime.c
Original file line number Diff line number Diff line change
Expand Up @@ -1489,6 +1489,7 @@ raise_if_datetime64_metadata_cast_error(char *object_type,
PyUString_FromFormat(" according to the rule %s",
npy_casting_to_string(casting)));
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);
return -1;
}
}
Expand Down Expand Up @@ -1520,6 +1521,7 @@ raise_if_timedelta64_metadata_cast_error(char *object_type,
PyUString_FromFormat(" according to the rule %s",
npy_casting_to_string(casting)));
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);
return -1;
}
}
Expand Down Expand Up @@ -1654,6 +1656,7 @@ incompatible_units: {
PyUString_FromString(" because they have "
"incompatible nonlinear base time units"));
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);
return -1;
}
units_overflow: {
Expand All @@ -1666,6 +1669,7 @@ units_overflow: {
PyUString_FromString(" and "));
errmsg = append_metastr_to_string(meta2, 0, errmsg);
PyErr_SetObject(PyExc_OverflowError, errmsg);
Py_DECREF(errmsg);
return -1;
}
}
Expand Down Expand Up @@ -1813,6 +1817,7 @@ convert_datetime_metadata_tuple_to_datetime_metadata(PyObject *tuple,
"datetime metadata conversion, not ");
PyUString_ConcatAndDel(&errmsg, PyObject_Repr(tuple));
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);
return -1;
}

Expand Down
1 change: 1 addition & 0 deletions numpy/core/src/multiarray/descriptor.c
Original file line number Diff line number Diff line change
Expand Up @@ -2538,6 +2538,7 @@ arraydescr_setstate(PyArray_Descr *self, PyObject *args)
errmsg = PyUString_FromString("Invalid datetime dtype (metadata, c_metadata): ");
PyUString_ConcatAndDel(&errmsg, PyObject_Repr(metadata));
PyErr_SetObject(PyExc_ValueError, errmsg);
Py_DECREF(errmsg);
return NULL;
}

Expand Down
1 change: 1 addition & 0 deletions numpy/core/src/multiarray/methods.c
Original file line number Diff line number Diff line change
Expand Up @@ -858,6 +858,7 @@ array_astype(PyArrayObject *self, PyObject *args, PyObject *kwds)
PyUString_FromFormat(" according to the rule %s",
npy_casting_to_string(casting)));
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);
Py_DECREF(dtype);
return NULL;
}
Expand Down
5 changes: 5 additions & 0 deletions numpy/core/src/multiarray/nditer_constr.c
Original file line number Diff line number Diff line change
Expand Up @@ -1337,6 +1337,7 @@ npyiter_check_casting(int nop, PyArrayObject **op,
PyUString_FromFormat(" according to the rule %s",
npyiter_casting_to_string(casting)));
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);
return 0;
}
/* Check write (temp -> op) casting */
Expand All @@ -1359,6 +1360,7 @@ npyiter_check_casting(int nop, PyArrayObject **op,
(int)iop,
npyiter_casting_to_string(casting)));
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);
return 0;
}

Expand Down Expand Up @@ -1738,6 +1740,7 @@ broadcast_error: {

}
PyErr_SetObject(PyExc_ValueError, errmsg);
Py_DECREF(errmsg);
}
else {
errmsg = PyUString_FromString("operands could not be broadcast "
Expand Down Expand Up @@ -1804,6 +1807,7 @@ broadcast_error: {

}
PyErr_SetObject(PyExc_ValueError, errmsg);
Py_DECREF(errmsg);
}

return 0;
Expand Down Expand Up @@ -1890,6 +1894,7 @@ operand_different_than_broadcast: {
}

PyErr_SetObject(PyExc_ValueError, errmsg);
Py_DECREF(errmsg);

return 0;
}
Expand Down
7 changes: 7 additions & 0 deletions numpy/core/src/umath/ufunc_type_resolution.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ PyUFunc_ValidateCasting(PyUFuncObject *ufunc,
PyUString_FromFormat(" with casting rule %s",
npy_casting_to_string(casting)));
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);
return -1;
}
} else if (operands[i] != NULL) {
Expand All @@ -95,6 +96,7 @@ PyUFunc_ValidateCasting(PyUFuncObject *ufunc,
PyUString_FromFormat(" with casting rule %s",
npy_casting_to_string(casting)));
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);
return -1;
}
}
Expand Down Expand Up @@ -725,6 +727,7 @@ type_reso_error: {
PyUString_ConcatAndDel(&errmsg,
PyObject_Repr((PyObject *)PyArray_DESCR(operands[1])));
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);
return -1;
}
}
Expand Down Expand Up @@ -895,6 +898,7 @@ type_reso_error: {
PyUString_ConcatAndDel(&errmsg,
PyObject_Repr((PyObject *)PyArray_DESCR(operands[1])));
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);
return -1;
}
}
Expand Down Expand Up @@ -1038,6 +1042,7 @@ type_reso_error: {
PyUString_ConcatAndDel(&errmsg,
PyObject_Repr((PyObject *)PyArray_DESCR(operands[1])));
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);
return -1;
}
}
Expand Down Expand Up @@ -1157,6 +1162,7 @@ type_reso_error: {
PyUString_ConcatAndDel(&errmsg,
PyObject_Repr((PyObject *)PyArray_DESCR(operands[1])));
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);
return -1;
}
}
Expand Down Expand Up @@ -1273,6 +1279,7 @@ PyUFunc_DefaultLegacyInnerLoopSelector(PyUFuncObject *ufunc,
}
}
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);

return -1;
}
Expand Down
0