From fc20aae9541750cc12c8719e3bc3b71b7ca05dbb Mon Sep 17 00:00:00 2001 From: Manuel Gunther <siebenkopf@googlemail.com> Date: Thu, 3 Dec 2015 13:46:27 -0700 Subject: [PATCH] Corrected error cases in module creation --- bob/learn/em/main.cpp | 6 ++++-- bob/learn/em/version.cpp | 18 ++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/bob/learn/em/main.cpp b/bob/learn/em/main.cpp index 04b6d6a..dc413e8 100644 --- a/bob/learn/em/main.cpp +++ b/bob/learn/em/main.cpp @@ -60,11 +60,13 @@ static PyObject* create_module (void) { # if PY_VERSION_HEX >= 0x03000000 PyObject* module = PyModule_Create(&module_definition); + auto module_ = make_xsafe(module); + const char* ret = "O"; # else PyObject* module = Py_InitModule3(BOB_EXT_MODULE_NAME, module_methods, module_docstr); + const char* ret = "N"; # endif if (!module) return 0; - auto module_ = make_safe(module); ///< protects against early returns if (!init_BobLearnEMGaussian(module)) return 0; if (!init_BobLearnEMGMMStats(module)) return 0; @@ -129,7 +131,7 @@ static PyObject* create_module (void) { if (import_bob_learn_activation() < 0) return 0; if (import_bob_learn_linear() < 0) return 0; - return Py_BuildValue("O", module); + return Py_BuildValue(ret, module); } PyMODINIT_FUNC BOB_EXT_ENTRY_NAME (void) { diff --git a/bob/learn/em/version.cpp b/bob/learn/em/version.cpp index e77bc16..866894f 100644 --- a/bob/learn/em/version.cpp +++ b/bob/learn/em/version.cpp @@ -63,22 +63,24 @@ static PyModuleDef module_definition = { static PyObject* create_module (void) { # if PY_VERSION_HEX >= 0x03000000 - PyObject* m = PyModule_Create(&module_definition); + PyObject* module = PyModule_Create(&module_definition); + auto module_ = make_xsafe(module); + const char* ret = "O"; # else - PyObject* m = Py_InitModule3(BOB_EXT_MODULE_NAME, module_methods, module_docstr); + PyObject* module = Py_InitModule3(BOB_EXT_MODULE_NAME, module_methods, module_docstr); + const char* ret = "N"; # endif - if (!m) return 0; - auto m_ = make_safe(m); ///< protects against early returns + if (!module) return 0; /* register version numbers and constants */ - if (PyModule_AddIntConstant(m, "api", BOB_LEARN_EM_API_VERSION) < 0) return 0; - if (PyModule_AddStringConstant(m, "module", BOB_EXT_MODULE_VERSION) < 0) return 0; + if (PyModule_AddIntConstant(module, "api", BOB_LEARN_EM_API_VERSION) < 0) return 0; + if (PyModule_AddStringConstant(module, "module", BOB_EXT_MODULE_VERSION) < 0) return 0; PyObject* externals = build_version_dictionary(); if (!externals) return 0; - if (PyModule_AddObject(m, "externals", externals) < 0) return 0; + if (PyModule_AddObject(module, "externals", externals) < 0) return 0; - return Py_BuildValue("O", m); + return Py_BuildValue(ret, module); } PyMODINIT_FUNC BOB_EXT_ENTRY_NAME (void) { -- GitLab