summaryrefslogtreecommitdiffstatshomepage
path: root/esp8266/esp_mphal.c
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-05-24 01:30:28 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-05-24 01:30:28 +0300
commit116eeee6dbdffc52a34c3e18e001597e2bfb7bcd (patch)
tree8f78a4a5098e807da364de26bbf06adc4e014a1c /esp8266/esp_mphal.c
parentbc2ba6b2e3baabf256e9c7af7a57cc3c2d01c887 (diff)
downloadmicropython-116eeee6dbdffc52a34c3e18e001597e2bfb7bcd.tar.gz
micropython-116eeee6dbdffc52a34c3e18e001597e2bfb7bcd.zip
esp8266/esp_mphal: Fix NLR buffer leak in call_dupterm_read().
Diffstat (limited to 'esp8266/esp_mphal.c')
-rw-r--r--esp8266/esp_mphal.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/esp8266/esp_mphal.c b/esp8266/esp_mphal.c
index ec5da7d3d0..eabf8ca208 100644
--- a/esp8266/esp_mphal.c
+++ b/esp8266/esp_mphal.c
@@ -166,15 +166,16 @@ static int call_dupterm_read(void) {
read_m[2] = MP_OBJ_NEW_SMALL_INT(1);
mp_obj_t res = mp_call_method_n_kw(1, 0, read_m);
if (res == mp_const_none) {
+ nlr_pop();
return -2;
}
mp_buffer_info_t bufinfo;
mp_get_buffer_raise(res, &bufinfo, MP_BUFFER_READ);
+ nlr_pop();
if (bufinfo.len == 0) {
mp_uos_deactivate("dupterm: EOF received, deactivating\n", MP_OBJ_NULL);
return -1;
}
- nlr_pop();
return *(byte*)bufinfo.buf;
} else {
mp_uos_deactivate("dupterm: Exception in read() method, deactivating: ", nlr.ret_val);