diff options
Diffstat (limited to 'ports/unix/unix_mphal.c')
| -rw-r--r-- | ports/unix/unix_mphal.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/ports/unix/unix_mphal.c b/ports/unix/unix_mphal.c index 8d6539c88..24c0fa3cd 100644 --- a/ports/unix/unix_mphal.c +++ b/ports/unix/unix_mphal.c @@ -184,10 +184,15 @@ main_term:; return c; } -void mp_hal_stdout_tx_strn(const char *str, size_t len) { +mp_uint_t mp_hal_stdout_tx_strn(const char *str, size_t len) { ssize_t ret; MP_HAL_RETRY_SYSCALL(ret, write(STDOUT_FILENO, str, len), {}); - mp_os_dupterm_tx_strn(str, len); + mp_uint_t written = ret < 0 ? 0 : ret; + int dupterm_res = mp_os_dupterm_tx_strn(str, len); + if (dupterm_res >= 0) { + written = MIN((mp_uint_t)dupterm_res, written); + } + return written; } // cooked is same as uncooked because the terminal does some postprocessing |
