diff options
author | Travis Oliphant <oliphant@enthought.com> | 2005-11-16 05:36:18 +0000 |
---|---|---|
committer | Travis Oliphant <oliphant@enthought.com> | 2005-11-16 05:36:18 +0000 |
commit | 48971fb6b2b44cf475f06ef5a53d123081f1315c (patch) | |
tree | 80e564601fe80c30c47c33bb91c3a2f684426afe /scipy/base/src | |
parent | 17b9068cc2566b61ed8e8920f1b2ad842b76176c (diff) | |
download | numpy-48971fb6b2b44cf475f06ef5a53d123081f1315c.tar.gz |
Fixed set memory to zero for generic allocator.
Diffstat (limited to 'scipy/base/src')
-rw-r--r-- | scipy/base/src/arrayobject.c | 3 | ||||
-rw-r--r-- | scipy/base/src/scalartypes.inc.src | 8 |
2 files changed, 9 insertions, 2 deletions
diff --git a/scipy/base/src/arrayobject.c b/scipy/base/src/arrayobject.c index e49ef8170..41b436ce0 100644 --- a/scipy/base/src/arrayobject.c +++ b/scipy/base/src/arrayobject.c @@ -4734,7 +4734,8 @@ _array_find_type(PyObject *op, PyArray_Typecode *minitype, Py_DECREF(ip); goto finish; } - Py_DECREF(ip); + Py_XDECREF(ip); + if (PyErr_Occurred()) PyErr_Clear(); } if (PyInstance_Check(op)) goto deflt; diff --git a/scipy/base/src/scalartypes.inc.src b/scipy/base/src/scalartypes.inc.src index 467b32cc5..135b0dcab 100644 --- a/scipy/base/src/scalartypes.inc.src +++ b/scipy/base/src/scalartypes.inc.src @@ -126,7 +126,11 @@ gentype_alloc(PyTypeObject *type, int nitems) const size_t size = _PyObject_VAR_SIZE(type, nitems+1); obj = (PyObject *)malloc(size); - PyObject_Init(obj, type); + memset(obj, 0, size); + if (type->tp_itemsize == 0) + PyObject_INIT(obj, type); + else + (void) PyObject_INIT_VAR((PyVarObject *)obj, type, nitems); return obj; } @@ -1520,7 +1524,9 @@ initialize_numeric_types(void) PyGenericArrType_Type.tp_getset = gentype_getsets; PyGenericArrType_Type.tp_new = NULL; PyGenericArrType_Type.tp_alloc = gentype_alloc; + PyStringArrType_Type.tp_alloc = NULL; PyGenericArrType_Type.tp_free = free; + PyStringArrType_Type.tp_free = NULL; PyGenericArrType_Type.tp_repr = gentype_repr; PyGenericArrType_Type.tp_str = gentype_str; PyGenericArrType_Type.tp_richcompare = gentype_richcompare; |