summaryrefslogtreecommitdiffstatshomepage
path: root/lib
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-04-01 12:53:50 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-04-01 12:53:50 +0300
commit777232c9a5ce15ca7c7b0b3c52dd2a3b00bb1acc (patch)
treed5330f4b8cdddc93d27b65a7d67dc0d500913c05 /lib
parent3d4a5352086894414a291dac14fbfd6166cfae3e (diff)
downloadmicropython-777232c9a5ce15ca7c7b0b3c52dd2a3b00bb1acc.tar.gz
micropython-777232c9a5ce15ca7c7b0b3c52dd2a3b00bb1acc.zip
esp8266: Disallow recursive calls to REPL.
Before this change, if REPL blocked executing some code, it was possible to still input new statememts and excuting them, all leading to weird, and portentially dangerous interaction. TODO: Current implementation may have issues processing input accumulated while REPL was blocked.
Diffstat (limited to 'lib')
-rw-r--r--lib/utils/pyexec.c9
-rw-r--r--lib/utils/pyexec.h1
2 files changed, 8 insertions, 2 deletions
diff --git a/lib/utils/pyexec.c b/lib/utils/pyexec.c
index d1205034e5..8afa3813cd 100644
--- a/lib/utils/pyexec.c
+++ b/lib/utils/pyexec.c
@@ -277,12 +277,17 @@ input_restart:
}
}
+uint8_t pyexec_repl_active;
int pyexec_event_repl_process_char(int c) {
+ pyexec_repl_active = 1;
+ int res;
if (pyexec_mode_kind == PYEXEC_MODE_RAW_REPL) {
- return pyexec_raw_repl_process_char(c);
+ res = pyexec_raw_repl_process_char(c);
} else {
- return pyexec_friendly_repl_process_char(c);
+ res = pyexec_friendly_repl_process_char(c);
}
+ pyexec_repl_active = 0;
+ return res;
}
#else // MICROPY_REPL_EVENT_DRIVEN
diff --git a/lib/utils/pyexec.h b/lib/utils/pyexec.h
index cf44530c59..e0f62440e0 100644
--- a/lib/utils/pyexec.h
+++ b/lib/utils/pyexec.h
@@ -42,6 +42,7 @@ int pyexec_file(const char *filename);
int pyexec_frozen_module(const char *name);
void pyexec_event_repl_init(void);
int pyexec_event_repl_process_char(int c);
+extern uint8_t pyexec_repl_active;
MP_DECLARE_CONST_FUN_OBJ(pyb_set_repl_info_obj);