diff options
| author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2016-07-04 13:32:30 +0300 |
|---|---|---|
| committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2016-07-04 13:32:30 +0300 |
| commit | 426112ce88bf3f6f86bf6900b74d7719d9991167 (patch) | |
| tree | 8dc982041b3d55f78b4641a18a9909065b0507ea | |
| parent | d83177b24867c42fb850714e328c7f1636067908 (diff) | |
extmod/moduos_dupterm: Reserve buffer bytearray object for dupterm.
Allocating it for each read/write operation is a memory fragmentation
hazard.
| -rw-r--r-- | extmod/moduos_dupterm.c | 5 | ||||
| -rw-r--r-- | py/mpstate.h | 1 |
2 files changed, 5 insertions, 1 deletions
diff --git a/extmod/moduos_dupterm.c b/extmod/moduos_dupterm.c index 4c9f9e494..66ca22ff9 100644 --- a/extmod/moduos_dupterm.c +++ b/extmod/moduos_dupterm.c @@ -69,9 +69,12 @@ STATIC mp_obj_t mp_uos_dupterm(mp_uint_t n_args, const mp_obj_t *args) { } } else { if (args[0] == mp_const_none) { - MP_STATE_PORT(term_obj) = NULL; + MP_STATE_PORT(term_obj) = MP_OBJ_NULL; } else { MP_STATE_PORT(term_obj) = args[0]; + if (MP_STATE_PORT(dupterm_arr_obj) == MP_OBJ_NULL) { + MP_STATE_PORT(dupterm_arr_obj) = mp_obj_new_bytearray(1, ""); + } } return mp_const_none; } diff --git a/py/mpstate.h b/py/mpstate.h index b79fd7c5c..281795773 100644 --- a/py/mpstate.h +++ b/py/mpstate.h @@ -143,6 +143,7 @@ typedef struct _mp_state_vm_t { #if MICROPY_PY_OS_DUPTERM mp_obj_t term_obj; + mp_obj_t dupterm_arr_obj; #endif #if MICROPY_PY_LWIP_SLIP |
