diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2016-04-01 12:53:50 +0300 |
---|---|---|
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2016-04-01 12:53:50 +0300 |
commit | 777232c9a5ce15ca7c7b0b3c52dd2a3b00bb1acc (patch) | |
tree | d5330f4b8cdddc93d27b65a7d67dc0d500913c05 /lib/utils/pyexec.c | |
parent | 3d4a5352086894414a291dac14fbfd6166cfae3e (diff) |
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/utils/pyexec.c')
-rw-r--r-- | lib/utils/pyexec.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/utils/pyexec.c b/lib/utils/pyexec.c index d1205034e..8afa3813c 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 |