summaryrefslogtreecommitdiffstatshomepage
path: root/py/objexcept.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-03-29 01:25:05 +0000
committerDamien George <damien.p.george@gmail.com>2014-03-29 01:25:05 +0000
commit1d7553311c70810a6fea2d72b04403b93711389c (patch)
tree7df6787348d3d4951d8c2e6ea763c959259eb123 /py/objexcept.c
parent440f041525a01990827823d2fccd3c081ea92a14 (diff)
parentc4d589e2bb228e2b4a0942f3bd76479ec18acf84 (diff)
downloadmicropython-1d7553311c70810a6fea2d72b04403b93711389c.tar.gz
micropython-1d7553311c70810a6fea2d72b04403b93711389c.zip
Merge pull request #382 from pfalcon/genexit-inst
objgenerator: close(): Throw instance of GeneratorExit (not type).
Diffstat (limited to 'py/objexcept.c')
-rw-r--r--py/objexcept.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/py/objexcept.c b/py/objexcept.c
index 71874751b2..d4c4b12492 100644
--- a/py/objexcept.c
+++ b/py/objexcept.c
@@ -21,6 +21,12 @@ typedef struct mp_obj_exception_t {
mp_obj_tuple_t args;
} mp_obj_exception_t;
+// Instance of GeneratorExit exception - needed by generator.close()
+// This would belong to objgenerator.c, but to keep mp_obj_exception_t
+// definition module-private so far, have it here.
+STATIC mp_obj_exception_t GeneratorExit_obj = {{&mp_type_GeneratorExit}, MP_OBJ_NULL, NULL, {{&tuple_type}, 0}};
+const mp_obj_t mp_const_GeneratorExit = (mp_obj_t)&GeneratorExit_obj;
+
STATIC void mp_obj_exception_print(void (*print)(void *env, const char *fmt, ...), void *env, mp_obj_t o_in, mp_print_kind_t kind) {
mp_obj_exception_t *o = o_in;
if (o->msg != NULL) {