From e8432b3c725f90eda2b880624d5408ff147d399e Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky <pfalcon@users.sourceforge.net> Date: Sun, 15 Feb 2015 22:34:31 +0300 Subject: [PATCH] stackctrl: Encode "recursion depth exceeded" message as qstr. So corresponding exception can be thrown even under tight memory conditions. --- py/qstrdefs.h | 1 + py/stackctrl.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/py/qstrdefs.h b/py/qstrdefs.h index 4a34010a1..32f5b2ce0 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 bf6a815af..7d7bbc1be 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))); } } -- GitLab