python: Remove getCode() type workaround
Python 2.7 requires a workaround when wrapping exit objects to explicitly convert the return of getCode() to int to not confuse sys.exit. This workaround isn't needed and doesn't work on Python 3 since it doesn't have a separate long integer type. Change-Id: I57bc3fd8f4699676c046ece8a52baa2796959ffd Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/15978 Reviewed-by: Gabe Black <gabeblack@google.com> Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
This commit is contained in:
@@ -135,10 +135,18 @@ pybind_init_event(py::module &m_native)
|
||||
std::unique_ptr<GlobalSimLoopExitEvent, py::nodelete>>(
|
||||
m, "GlobalSimLoopExitEvent")
|
||||
.def("getCause", &GlobalSimLoopExitEvent::getCause)
|
||||
#if PY_MAJOR_VERSION >= 3
|
||||
.def("getCode", &GlobalSimLoopExitEvent::getCode)
|
||||
#else
|
||||
// Workaround for an issue where PyBind11 converts the exit
|
||||
// code to a long. This is normally fine, but sys.exit treats
|
||||
// any non-int type as an error and exits with status 1 if it
|
||||
// is passed a long.
|
||||
.def("getCode", [](GlobalSimLoopExitEvent *e) {
|
||||
return py::reinterpret_steal<py::object>(
|
||||
PyInt_FromLong(e->getCode()));
|
||||
})
|
||||
#endif
|
||||
;
|
||||
|
||||
// Event base class. These should never be returned directly to
|
||||
|
||||
Reference in New Issue
Block a user