py: Add protection against printing too nested or recursive data structures.

With a test which cannot be automatically validated so far.
This commit is contained in:
Paul Sokolovsky
2014-06-28 02:25:04 +03:00
parent 7e4ec3bf4f
commit 8993fb6cf0
2 changed files with 12 additions and 0 deletions

View File

@@ -35,6 +35,7 @@
#include "obj.h"
#include "runtime0.h"
#include "runtime.h"
#include "stackctrl.h"
mp_obj_type_t *mp_obj_get_type(mp_const_obj_t o_in) {
if (MP_OBJ_IS_SMALL_INT(o_in)) {
@@ -59,6 +60,8 @@ void printf_wrapper(void *env, const char *fmt, ...) {
}
void mp_obj_print_helper(void (*print)(void *env, const char *fmt, ...), void *env, mp_obj_t o_in, mp_print_kind_t kind) {
// There can be data structures nested too deep, or just recursive
STACK_CHECK();
#if !NDEBUG
if (o_in == NULL) {
print(env, "(nil)");