summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2015-02-15 22:34:31 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2015-02-15 22:41:14 +0300
commite8432b3c725f90eda2b880624d5408ff147d399e (patch)
tree6f7a2e23ab06e4734ffe849cb3402860277634b9
parentfa3b8951452ca13a807c0b6a090e0385507113db (diff)
downloadmicropython-e8432b3c725f90eda2b880624d5408ff147d399e.tar.gz
micropython-e8432b3c725f90eda2b880624d5408ff147d399e.zip
stackctrl: Encode "recursion depth exceeded" message as qstr.
So corresponding exception can be thrown even under tight memory conditions.
-rw-r--r--py/qstrdefs.h1
-rw-r--r--py/stackctrl.c3
2 files changed, 3 insertions, 1 deletions
diff --git a/py/qstrdefs.h b/py/qstrdefs.h
index 4a34010a12..32f5b2ce05 100644
--- a/py/qstrdefs.h
+++ b/py/qstrdefs.h
@@ -385,6 +385,7 @@ Q(qstr_info)
#if MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF && (MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE == 0)
Q(alloc_emergency_exception_buf)
#endif
+Q(maximum recursion depth exceeded)
Q(<module>)
Q(<lambda>)
diff --git a/py/stackctrl.c b/py/stackctrl.c
index bf6a815af0..7d7bbc1be1 100644
--- a/py/stackctrl.c
+++ b/py/stackctrl.c
@@ -48,7 +48,8 @@ void mp_stack_set_limit(mp_uint_t limit) {
void mp_stack_check(void) {
if (mp_stack_usage() >= MP_STATE_VM(stack_limit)) {
- nlr_raise(mp_obj_new_exception_msg(&mp_type_RuntimeError, "maximum recursion depth exceeded"));
+ nlr_raise(mp_obj_new_exception_arg1(&mp_type_RuntimeError,
+ MP_OBJ_NEW_QSTR(MP_QSTR_maximum_space_recursion_space_depth_space_exceeded)));
}
}