diff --git a/components/drivers/tty/n_tty.c b/components/drivers/tty/n_tty.c index 5ed7d6a6f81b64cb5ebe67efa1ebc89a778acc79..8b6d1d089f747240b5a2c696035d3802d0f2e892 100644 --- a/components/drivers/tty/n_tty.c +++ b/components/drivers/tty/n_tty.c @@ -1436,14 +1436,15 @@ static int canon_copy_from_read_buf(struct tty_struct *tty, char *b, size_t nr) size_t buf_size = RT_TTY_BUF - tail; const void *from = read_buf_addr(ldata, tail); + size_t temp_n = n; if (n > buf_size) { rt_memcpy(b, from, buf_size); b += buf_size; - n -= buf_size; + temp_n -= buf_size; from = ldata->read_buf; } - rt_memcpy(b, from, n); + rt_memcpy(b, from, temp_n); if (found) {