浏览代码

[tty]修复多次scanf之后,导致丢数据的问题 (#7640)

goldengrandpa 1 年之前
父节点
当前提交
1d239db59e
共有 1 个文件被更改,包括 3 次插入2 次删除
  1. 3 2
      components/drivers/tty/n_tty.c

+ 3 - 2
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;
     size_t buf_size = RT_TTY_BUF - tail;
     const void *from = read_buf_addr(ldata, tail);
     const void *from = read_buf_addr(ldata, tail);
+    size_t temp_n = n;
     if (n > buf_size)
     if (n > buf_size)
     {
     {
         rt_memcpy(b, from, buf_size);
         rt_memcpy(b, from, buf_size);
         b += buf_size;
         b += buf_size;
-        n -= buf_size;
+        temp_n -= buf_size;
         from = ldata->read_buf;
         from = ldata->read_buf;
     }
     }
-    rt_memcpy(b, from, n);
+    rt_memcpy(b, from, temp_n);
 
 
     if (found)
     if (found)
     {
     {