On Thu, Sep 8, 2016, at 04:09, Christian Heimes wrote: > On 2016-09-07 17:47, benjamin.peterson wrote: > > https://hg.python.org/cpython/rev/234f758449f8 > > changeset: 103223:234f758449f8 > > branch: 3.5 > > parent: 103213:7537ca1c2aaf > > user: Benjamin Peterson <benja...@python.org> > > date: Wed Sep 07 08:46:59 2016 -0700 > > summary: > > supress coroutine warning when an exception is pending (#27968) > > > > files: > > Objects/genobject.c | 27 +++++++++++++++------------ > > 1 files changed, 15 insertions(+), 12 deletions(-) > > > > > > diff --git a/Objects/genobject.c b/Objects/genobject.c > > --- a/Objects/genobject.c > > +++ b/Objects/genobject.c > > @@ -21,7 +21,7 @@ > > _PyGen_Finalize(PyObject *self) > > { > > PyGenObject *gen = (PyGenObject *)self; > > - PyObject *res; > > + PyObject *res = NULL; > > PyObject *error_type, *error_value, *error_traceback; > > > > if (gen->gi_frame == NULL || gen->gi_frame->f_stacktop == NULL) > > @@ -33,23 +33,26 @@ > > > > /* If `gen` is a coroutine, and if it was never awaited on, > > issue a RuntimeWarning. */ > > - if (gen->gi_code != NULL > > - && ((PyCodeObject *)gen->gi_code)->co_flags & CO_COROUTINE > > - && gen->gi_frame->f_lasti == -1 > > - && !PyErr_Occurred() > > - && PyErr_WarnFormat(PyExc_RuntimeWarning, 1, > > - "coroutine '%.50S' was never awaited", > > - gen->gi_qualname)) { > > - res = NULL; /* oops, exception */ > > + if (gen->gi_code != NULL && > > + ((PyCodeObject *)gen->gi_code)->co_flags & CO_COROUTINE && > > + gen->gi_frame->f_lasti == -1) { > > + if (!error_value) { > > + PyErr_WarnFormat(PyExc_RuntimeWarning, 1, > > + "coroutine '%.50S' was never awaited", > > + gen->gi_qualname); > > + } > > You don't check the return value of PyErr_WarnFormat(). It does not > signal an exception in case warnings are turned into exceptions.
It's checked by PyErr_Occurred() several lines later. _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com