mirror of
https://github.com/python/cpython.git
synced 2025-07-23 11:15:24 +00:00
Merge 3.4 (generator)
This commit is contained in:
commit
13a1c6022b
3 changed files with 119 additions and 3 deletions
|
@ -1189,8 +1189,8 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
|
|||
f->f_stacktop = NULL; /* remains NULL unless yield suspends frame */
|
||||
f->f_executing = 1;
|
||||
|
||||
if (co->co_flags & CO_GENERATOR && !throwflag) {
|
||||
if (f->f_exc_type != NULL && f->f_exc_type != Py_None) {
|
||||
if (co->co_flags & CO_GENERATOR) {
|
||||
if (!throwflag && f->f_exc_type != NULL && f->f_exc_type != Py_None) {
|
||||
/* We were in an except handler when we left,
|
||||
restore the exception state which was put aside
|
||||
(see YIELD_VALUE). */
|
||||
|
@ -3196,7 +3196,8 @@ fast_block_end:
|
|||
|| (retval == NULL && PyErr_Occurred()));
|
||||
|
||||
fast_yield:
|
||||
if (co->co_flags & CO_GENERATOR && (why == WHY_YIELD || why == WHY_RETURN)) {
|
||||
if (co->co_flags & CO_GENERATOR) {
|
||||
|
||||
/* The purpose of this block is to put aside the generator's exception
|
||||
state and restore that of the calling frame. If the current
|
||||
exception state is from the caller, we clear the exception values
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue