start() and stop() methods: return None where there is no exception;
returning NULL causes the interpreter to raise a SystemError.
Noted by Anthony Baxter at Python 10.
diff --git a/Modules/_hotshot.c b/Modules/_hotshot.c
index ebaf37c..f88629d 100644
--- a/Modules/_hotshot.c
+++ b/Modules/_hotshot.c
@@ -1180,8 +1180,11 @@
PyObject *result = NULL;
if (PyArg_ParseTuple(args, ":start")) {
- if (is_available(self))
+ if (is_available(self)) {
do_start(self);
+ result = Py_None;
+ Py_INCREF(result);
+ }
}
return result;
}
@@ -1198,8 +1201,11 @@
if (PyArg_ParseTuple(args, ":stop")) {
if (!self->active)
PyErr_SetString(ProfilerError, "profiler not active");
- else
+ else {
do_stop(self);
+ result = Py_None;
+ Py_INCREF(result);
+ }
}
return result;
}