From 120c87bfa76f7d2726b76748df260bb3775e4d32 Mon Sep 17 00:00:00 2001 From: Manuel Gunther <siebenkopf@googlemail.com> Date: Thu, 3 Dec 2015 13:53:36 -0700 Subject: [PATCH] Corrected error cases in module creation --- bob/ip/flandmark/main.cpp | 14 ++++++++------ bob/ip/flandmark/version.cpp | 16 +++++++++------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/bob/ip/flandmark/main.cpp b/bob/ip/flandmark/main.cpp index 9ae2006..9a18a80 100644 --- a/bob/ip/flandmark/main.cpp +++ b/bob/ip/flandmark/main.cpp @@ -68,23 +68,25 @@ static PyObject* create_module (void) { if (PyType_Ready(&PyBobIpFlandmark_Type) < 0) return 0; # 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 the types to python */ Py_INCREF(&PyBobIpFlandmark_Type); - if (PyModule_AddObject(m, "Flandmark", (PyObject *)&PyBobIpFlandmark_Type) < 0) return 0; + if (PyModule_AddObject(module, "Flandmark", (PyObject *)&PyBobIpFlandmark_Type) < 0) return 0; /* imports dependencies */ if (import_bob_blitz() < 0) return 0; if (import_bob_core_logging() < 0) return 0; if (import_bob_io_base() < 0) return 0; - return Py_BuildValue("O", m); + return Py_BuildValue(ret, module); } PyMODINIT_FUNC BOB_EXT_ENTRY_NAME (void) { diff --git a/bob/ip/flandmark/version.cpp b/bob/ip/flandmark/version.cpp index 3374623..d8b969f 100644 --- a/bob/ip/flandmark/version.cpp +++ b/bob/ip/flandmark/version.cpp @@ -57,21 +57,23 @@ 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_AddStringConstant(m, "module", BOB_EXT_MODULE_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