Commit 4721cf06 authored by Stefan Behnel's avatar Stefan Behnel

repair coroutine delegation in await expressions (must pass through "gen->yieldfrom" check)

parent 18cebc31
...@@ -495,7 +495,7 @@ __Pyx_async_gen_asend_send(__pyx_PyAsyncGenASend *o, PyObject *arg) ...@@ -495,7 +495,7 @@ __Pyx_async_gen_asend_send(__pyx_PyAsyncGenASend *o, PyObject *arg)
o->ags_state = __PYX_AWAITABLE_STATE_ITER; o->ags_state = __PYX_AWAITABLE_STATE_ITER;
} }
result = __Pyx_Coroutine_SendEx((__pyx_CoroutineObject*)o->ags_gen, arg, 0); result = __Pyx_Coroutine_Send((PyObject*)o->ags_gen, arg);
result = __Pyx_async_gen_unwrap_value(o->ags_gen, result); result = __Pyx_async_gen_unwrap_value(o->ags_gen, result);
if (result == NULL) { if (result == NULL) {
...@@ -839,7 +839,7 @@ __Pyx_async_gen_athrow_send(__pyx_PyAsyncGenAThrow *o, PyObject *arg) ...@@ -839,7 +839,7 @@ __Pyx_async_gen_athrow_send(__pyx_PyAsyncGenAThrow *o, PyObject *arg)
assert (o->agt_state == __PYX_AWAITABLE_STATE_ITER); assert (o->agt_state == __PYX_AWAITABLE_STATE_ITER);
retval = __Pyx_Coroutine_SendEx((__pyx_CoroutineObject *)gen, arg, 0); retval = __Pyx_Coroutine_Send((PyObject *)gen, arg);
if (o->agt_args) { if (o->agt_args) {
return __Pyx_async_gen_unwrap_value(o->agt_gen, retval); return __Pyx_async_gen_unwrap_value(o->agt_gen, retval);
} else { } else {
......
...@@ -419,6 +419,9 @@ static PyTypeObject *__pyx_CoroutineAwaitType = 0; ...@@ -419,6 +419,9 @@ static PyTypeObject *__pyx_CoroutineAwaitType = 0;
static int __pyx_Coroutine_init(void); /*proto*/ static int __pyx_Coroutine_init(void); /*proto*/
static PyObject *__Pyx__Coroutine_await(PyObject *coroutine); /*proto*/ static PyObject *__Pyx__Coroutine_await(PyObject *coroutine); /*proto*/
static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); /*proto*/
static PyObject *__Pyx_Coroutine_Close(PyObject *self); /*proto*/
static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args); /*proto*/
//////////////////// Generator.proto //////////////////// //////////////////// Generator.proto ////////////////////
...@@ -452,10 +455,6 @@ static int __pyx_Generator_init(void); /*proto*/ ...@@ -452,10 +455,6 @@ static int __pyx_Generator_init(void); /*proto*/
#include <structmember.h> #include <structmember.h>
#include <frameobject.h> #include <frameobject.h>
static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value);
static PyObject *__Pyx_Coroutine_Close(PyObject *self);
static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args);
#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) #define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom)
// If StopIteration exception is set, fetches its 'value' // If StopIteration exception is set, fetches its 'value'
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment