diff --git a/py/obj.c b/py/obj.c index 322a302f97aac..bd2aaf9d26494 100644 --- a/py/obj.c +++ b/py/obj.c @@ -63,6 +63,9 @@ const char *mp_obj_get_type_str(mp_const_obj_t o_in) { void mp_obj_print_helper(const mp_print_t *print, mp_obj_t o_in, mp_print_kind_t kind) { // There can be data structures nested too deep, or just recursive MP_STACK_CHECK(); + #ifdef RUN_BACKGROUND_TASKS + RUN_BACKGROUND_TASKS; + #endif #ifndef NDEBUG if (o_in == MP_OBJ_NULL) { mp_print_str(print, "(nil)"); diff --git a/py/stream.c b/py/stream.c index 08c749cc30133..1d25f64706c2a 100644 --- a/py/stream.c +++ b/py/stream.c @@ -341,6 +341,9 @@ STATIC mp_obj_t stream_readall(mp_obj_t self_in) { p = vstr_extend(&vstr, DEFAULT_BUFFER_SIZE); current_read = DEFAULT_BUFFER_SIZE; } + #ifdef RUN_BACKGROUND_TASKS + RUN_BACKGROUND_TASKS; + #endif } vstr.len = total_size; diff --git a/shared-module/os/__init__.c b/shared-module/os/__init__.c index 313893d977f2c..8060eec4f33c4 100644 --- a/shared-module/os/__init__.c +++ b/shared-module/os/__init__.c @@ -128,6 +128,7 @@ mp_obj_t common_hal_os_listdir(const char* path) { while ((next = mp_iternext(iter_obj)) != MP_OBJ_STOP_ITERATION) { // next[0] is the filename. mp_obj_list_append(dir_list, mp_obj_subscr(next, MP_OBJ_NEW_SMALL_INT(0), MP_OBJ_SENTINEL)); + RUN_BACKGROUND_TASKS; } return dir_list; }