Mercurial > cpython-lru_cache-weakref
diff Python/ceval.c @ 47724:b33e8334f82f
#3114 fix a bus error when deallocated exceptions were used
| author | Benjamin Peterson <benjamin@python.org> |
|---|---|
| date | Sun, 15 Jun 2008 00:05:44 +0000 |
| parents | 7ba7901dad7f |
| children | ee2823e1f23b |
line wrap: on
line diff
--- a/Python/ceval.c Sat Jun 14 23:04:46 2008 +0000 +++ b/Python/ceval.c Sun Jun 15 00:05:44 2008 +0000 @@ -704,11 +704,11 @@ PyObject *v = POP(); \ Py_XDECREF(v); \ } \ - Py_XDECREF(tstate->exc_type); \ + Py_CLEAR(tstate->exc_type); \ + Py_CLEAR(tstate->exc_value); \ + Py_CLEAR(tstate->exc_traceback); \ tstate->exc_type = POP(); \ - Py_XDECREF(tstate->exc_value); \ tstate->exc_value = POP(); \ - Py_XDECREF(tstate->exc_traceback); \ tstate->exc_traceback = POP(); #define SAVE_EXC_STATE() \ @@ -716,9 +716,9 @@ Py_XINCREF(tstate->exc_type); \ Py_XINCREF(tstate->exc_value); \ Py_XINCREF(tstate->exc_traceback); \ - Py_XDECREF(f->f_exc_type); \ - Py_XDECREF(f->f_exc_value); \ - Py_XDECREF(f->f_exc_traceback); \ + Py_CLEAR(f->f_exc_type); \ + Py_CLEAR(f->f_exc_value); \ + Py_CLEAR(f->f_exc_traceback); \ f->f_exc_type = tstate->exc_type; \ f->f_exc_value = tstate->exc_value; \ f->f_exc_traceback = tstate->exc_traceback; \
