diff --git a/bob/io/base/file.cpp b/bob/io/base/file.cpp index 1b2d4dccf16bc7aab6a4bb1ed5710ba824b7987b..e5988d5a83109751f14ce821d729bf56bf7a9b66 100644 --- a/bob/io/base/file.cpp +++ b/bob/io/base/file.cpp @@ -272,8 +272,7 @@ static PyObject* PyBobIoFile_GetIndex (PyBobIoFileObject* self, Py_ssize_t i) { return 0; } - Py_INCREF(retval); - return retval; + return Py_BuildValue("O", retval); } @@ -330,8 +329,7 @@ static PyObject* PyBobIoFile_GetSlice (PyBobIoFileObject* self, PySliceObject* s } - Py_INCREF(retval); - return retval; + return Py_BuildValue("O", retval); } @@ -412,8 +410,7 @@ static PyObject* PyBobIoFile_Read(PyBobIoFileObject* self, PyObject *args, PyObj return 0; } - Py_INCREF(retval); - return retval; + return Py_BuildValue("O", retval); } @@ -646,7 +643,6 @@ static PyObject* PyBobIoFileIterator_New(PyTypeObject* type, PyObject*, PyObject } static PyObject* PyBobIoFileIterator_Iter (PyBobIoFileIteratorObject* self) { - Py_INCREF(self); return reinterpret_cast<PyObject*>(self); } @@ -696,10 +692,9 @@ PyTypeObject PyBobIoFileIterator_Type = { static PyObject* PyBobIoFile_Iter (PyBobIoFileObject* self) { PyBobIoFileIteratorObject* retval = (PyBobIoFileIteratorObject*)PyBobIoFileIterator_New(&PyBobIoFileIterator_Type, 0, 0); if (!retval) return 0; - Py_INCREF(self); retval->pyfile = self; retval->curpos = 0; - return reinterpret_cast<PyObject*>(retval); + return Py_BuildValue("N", retval); } PyTypeObject PyBobIoFile_Type = { diff --git a/bob/io/base/hdf5.cpp b/bob/io/base/hdf5.cpp index 3144461eadb75e1b7f96c376526a0cc75787c141..22e038379a0b83f515156a5cb9815215c64810d5 100644 --- a/bob/io/base/hdf5.cpp +++ b/bob/io/base/hdf5.cpp @@ -537,8 +537,7 @@ static PyObject* PyBobIo_HDF5TypeAsTuple (const bob::io::base::HDF5Type& t) { PyTuple_SET_ITEM(shape, i, value); } - Py_INCREF(retval); - return retval; + return Py_BuildValue("O", retval); } @@ -552,9 +551,8 @@ static PyObject* PyBobIo_HDF5DescriptorAsTuple (const bob::io::base::HDF5Descrip return 0; } PyObject* expand = d.expandable? Py_True : Py_False; - Py_INCREF(expand); - return Py_BuildValue("NNN", type, size, expand); //steals references + return Py_BuildValue("NNO", type, size, expand); //steals references, except for True/False } @@ -592,8 +590,7 @@ static PyObject* PyBobIoHDF5File_Describe(PyBobIoHDF5FileObject* self, PyObject return 0; } - Py_INCREF(retval); - return retval; + return Py_BuildValue("O", retval); } PyDoc_STRVAR(s_describe_str, "describe"); @@ -738,8 +735,7 @@ static PyObject* PyBobIoHDF5File_Paths(PyBobIoHDF5FileObject* self, PyObject *ar return 0; } - Py_INCREF(retval); - return retval; + return Py_BuildValue("O", retval); } PyDoc_STRVAR(s_keys_str, "keys"); @@ -918,8 +914,7 @@ static PyObject* PyBobIoHDF5File_Xread(PyBobIoHDF5FileObject* self, return 0; } - Py_INCREF(retval); - return retval; + return Py_BuildValue("O", retval); } static PyObject* PyBobIoHDF5File_Read(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) { @@ -988,8 +983,7 @@ static PyObject* PyBobIoHDF5File_ListRead(PyBobIoHDF5FileObject* self, PyObject PyTuple_SET_ITEM(retval, k, item); } - Py_INCREF(retval); - return retval; + return Py_BuildValue("O", retval); } @@ -1895,8 +1889,7 @@ static PyObject* PyBobIoHDF5File_ReadAttribute(PyBobIoHDF5FileObject* self, return 0; } - Py_INCREF(retval); - return retval; + return Py_BuildValue("O", retval); } static PyObject* PyBobIoHDF5File_GetAttribute(PyBobIoHDF5FileObject* self, PyObject *args, PyObject* kwds) { @@ -1984,9 +1977,7 @@ static PyObject* PyBobIoHDF5File_GetAttributes(PyBobIoHDF5FileObject* self, PyOb boost::format m("unsupported HDF5 data type detected for attribute `%s' at path `%s' of file `%s' - returning None"); m % k->first % k->second.str() % filename; PyErr_Warn(PyExc_UserWarning, m.str().c_str()); - item = Py_None; - Py_INCREF(item); - Py_INCREF(Py_None); + item = Py_BuildValue(""); } else item = PyBobIoHDF5File_ReadAttribute(self, path, k->first.c_str(), k->second); @@ -1996,8 +1987,7 @@ static PyObject* PyBobIoHDF5File_GetAttributes(PyBobIoHDF5FileObject* self, PyOb if (PyDict_SetItemString(retval, k->first.c_str(), item) != 0) return 0; } - Py_INCREF(retval); - return retval; + return Py_BuildValue("O", retval); } diff --git a/bob/io/base/main.cpp b/bob/io/base/main.cpp index f7dfb87c59465b2d49985e641f6a765e16d22e61..304fb59f3bb937a741a7ce9196080770b3c8a2bc 100644 --- a/bob/io/base/main.cpp +++ b/bob/io/base/main.cpp @@ -39,8 +39,7 @@ static PyObject* PyBobIo_Extensions(PyObject*) { } } - Py_INCREF(retval); - return retval; + return Py_BuildValue("O", retval); } @@ -184,8 +183,7 @@ static PyObject* create_module (void) { return 0; } - Py_INCREF(m); - return m; + return Py_BuildValue("O", m); } diff --git a/bob/io/base/version.cpp b/bob/io/base/version.cpp index 076da937db6bd4dc9f0c6869252dd8c35d0906b5..86e5fc572e19b967446272a42bed94acdd003d43 100644 --- a/bob/io/base/version.cpp +++ b/bob/io/base/version.cpp @@ -25,15 +25,6 @@ #include <bob.blitz/cleanup.h> #include <bob.core/config.h> -static int dict_set(PyObject* d, const char* key, const char* value) { - PyObject* v = Py_BuildValue("s", value); - if (!v) return 0; - auto v_ = make_safe(v); - int retval = PyDict_SetItemString(d, key, v); - if (retval == 0) return 1; //all good - return 0; //a problem occurred -} - static int dict_steal(PyObject* d, const char* key, PyObject* value) { if (!value) return 0; auto value_ = make_safe(value); @@ -42,6 +33,12 @@ static int dict_steal(PyObject* d, const char* key, PyObject* value) { return 0; //a problem occurred } + +static int dict_set(PyObject* d, const char* key, const char* value) { + PyObject* v = Py_BuildValue("s", value); + return dict_steal(d, key, v); +} + /*********************************************************** * Version number generation ***********************************************************/ @@ -132,9 +129,7 @@ static PyObject* build_version_dictionary() { if (!dict_steal(retval, "bob.blitz", bob_blitz_version())) return 0; if (!dict_steal(retval, "bob.core", bob_core_version())) return 0; - Py_INCREF(retval); - Py_INCREF(retval); - return retval; + return Py_BuildValue("O", retval); } static PyMethodDef module_methods[] = { @@ -180,8 +175,7 @@ static PyObject* create_module (void) { return 0; } - Py_INCREF(m); - return m; + return Py_BuildValue("O", m); }