Skip to content

Commit 476232b

Browse files
author
Anselm Kruis
committed
merge 3.3-slp (Stackless python#70)
2 parents 79f0e11 + cc52455 commit 476232b

File tree

3 files changed

+6
-0
lines changed

3 files changed

+6
-0
lines changed

Objects/abstract.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2681,6 +2681,7 @@ PyIter_Next(PyObject *iter)
26812681
STACKLESS_PROMOTE_METHOD(iter, tp_iternext);
26822682
result = (*iter->ob_type->tp_iternext)(iter);
26832683
STACKLESS_ASSERT();
2684+
STACKLESS_ASSERT_UNWINDING_VALUE_IS_NOT(result, NULL);
26842685
if (result == NULL &&
26852686
PyErr_Occurred() &&
26862687
PyErr_ExceptionMatches(PyExc_StopIteration))

Objects/typeobject.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5460,6 +5460,7 @@ wrap_next(PyObject *self, PyObject *args, void *wrapped)
54605460
STACKLESS_PROMOTE_ALL();
54615461
res = (*func)(self);
54625462
STACKLESS_ASSERT();
5463+
STACKLESS_ASSERT_UNWINDING_VALUE_IS_NOT(res, NULL);
54635464
if (res == NULL && !PyErr_Occurred())
54645465
PyErr_SetNone(PyExc_StopIteration);
54655466
return res;

Stackless/core/stackless_impl.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@ PyAPI_FUNC(PyTaskletObject *) slp_get_watchdog(PyThreadState *ts, int interrupt)
181181
#define STACKLESS_RETVAL(obj) \
182182
(STACKLESS_UNWINDING(obj) ? Py_UnwindToken->tempval : (obj))
183183

184+
#define STACKLESS_ASSERT_UNWINDING_VALUE_IS_NOT(obj, val) \
185+
assert(!STACKLESS_UNWINDING(obj) || ((Py_UnwindToken->tempval) != (val)))
186+
184187
/* macros for setting/resetting the stackless flag */
185188

186189
#define STACKLESS_GETARG() int stackless = (stackless = slp_try_stackless, \
@@ -555,6 +558,7 @@ PyObject * slp_get_channel_callback(void);
555558
#define STACKLESS_ASSERT() assert(1)
556559

557560
#define STACKLESS_RETVAL(obj) (obj)
561+
#define STACKLESS_ASSERT_UNWINDING_VALUE_IS_NOT(val) assert(1)
558562

559563
#define STACKLESS_DECLARE_METHOD(type, meth)
560564

0 commit comments

Comments
 (0)