]> granicus.if.org Git - python/commitdiff
Prevent a NULL pointer from being pushed onto the stack.
authorJeremy Hylton <jeremy@alum.mit.edu>
Wed, 26 Sep 2001 19:24:45 +0000 (19:24 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Wed, 26 Sep 2001 19:24:45 +0000 (19:24 +0000)
It's possible for PyErr_NormalizeException() to set the traceback
pointer to NULL.  I'm not sure how to provoke this directly from
Python, although it may be possible.  The error occurs when an
exception is set using PyErr_SetObject() and another exception occurs
while PyErr_NormalizeException() is creating the exception instance.

XXX As a result of this change, it's possible for an exception to
occur but sys.last_traceback to be left undefined.  Not sure if this
is a problem.

Python/ceval.c

index 5a8f503eb789040d24a8a1bc2e7bf78a0f6b285b..731e93fa834ccc1759f128f765e81609661470d5 100644 (file)
@@ -2255,7 +2255,11 @@ eval_frame(PyFrameObject *f)
                                                set_exc_info(tstate,
                                                             exc, val, tb);
                                        }
-                                       PUSH(tb);
+                                       if (tb == NULL) {
+                                               Py_INCREF(Py_None);
+                                               PUSH(Py_None);
+                                       } else
+                                               PUSH(tb);
                                        PUSH(val);
                                        PUSH(exc);
                                }