summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndreas Sandberg <andreas.sandberg@arm.com>2019-01-28 16:12:18 +0000
committerAndreas Sandberg <andreas.sandberg@arm.com>2019-01-31 17:31:54 +0000
commitfbdf0b689eb31543292f52c71d14152d8ff1156a (patch)
tree1dcf080aec5df498327fb7c92e80c73e95761b2f /src
parent244a984a006288bfe718451d0e44aed199cd8ae2 (diff)
downloadgem5-fbdf0b689eb31543292f52c71d14152d8ff1156a.tar.xz
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>
Diffstat (limited to 'src')
-rw-r--r--src/python/pybind11/event.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/python/pybind11/event.cc b/src/python/pybind11/event.cc
index d2d78fe72..a65ddc695 100644
--- a/src/python/pybind11/event.cc
+++ b/src/python/pybind11/event.cc
@@ -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