Whoops! One the "redundant" initializations removed by Vladimir in
the previous patch wasn't -- there was a path through the code that
bypassed all initializations. Thanks to Just for reporting the bug!
diff --git a/Python/ceval.c b/Python/ceval.c
index e366072..bcc2288 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -364,7 +364,7 @@
register PyObject *t;
register PyFrameObject *f; /* Current frame */
register PyObject **fastlocals;
- PyObject *retval; /* Return value */
+ PyObject *retval = NULL; /* Return value */
PyThreadState *tstate = PyThreadState_Get();
unsigned char *first_instr;
#ifdef LLTRACE
@@ -1769,7 +1769,7 @@
if (tstate->sys_profilefunc)
call_exc_trace(&tstate->sys_profilefunc,
(PyObject**)0, f);
-}
+ }
/* For the rest, treat WHY_RERAISE as WHY_EXCEPTION */