@@ -1444,24 +1444,27 @@ static void __receive_buf(struct tty_struct *tty, const unsigned char *cp,
1444
1444
struct n_tty_data * ldata = tty -> disc_data ;
1445
1445
const unsigned char * p ;
1446
1446
char * f , flags = TTY_NORMAL ;
1447
- int i ;
1448
1447
char buf [64 ];
1449
1448
1450
1449
if (ldata -> real_raw ) {
1451
- i = min (N_TTY_BUF_SIZE - read_cnt (ldata ),
1452
- N_TTY_BUF_SIZE - (ldata -> read_head & (N_TTY_BUF_SIZE - 1 )));
1453
- i = min (count , i );
1454
- memcpy (read_buf_addr (ldata , ldata -> read_head ), cp , i );
1455
- ldata -> read_head += i ;
1456
- cp += i ;
1457
- count -= i ;
1458
-
1459
- i = min (N_TTY_BUF_SIZE - read_cnt (ldata ),
1460
- N_TTY_BUF_SIZE - (ldata -> read_head & (N_TTY_BUF_SIZE - 1 )));
1461
- i = min (count , i );
1462
- memcpy (read_buf_addr (ldata , ldata -> read_head ), cp , i );
1463
- ldata -> read_head += i ;
1450
+ size_t n , head ;
1451
+
1452
+ head = ldata -> read_head & (N_TTY_BUF_SIZE - 1 );
1453
+ n = N_TTY_BUF_SIZE - max (read_cnt (ldata ), head );
1454
+ n = min_t (size_t , count , n );
1455
+ memcpy (read_buf_addr (ldata , head ), cp , n );
1456
+ ldata -> read_head += n ;
1457
+ cp += n ;
1458
+ count -= n ;
1459
+
1460
+ head = ldata -> read_head & (N_TTY_BUF_SIZE - 1 );
1461
+ n = N_TTY_BUF_SIZE - max (read_cnt (ldata ), head );
1462
+ n = min_t (size_t , count , n );
1463
+ memcpy (read_buf_addr (ldata , head ), cp , n );
1464
+ ldata -> read_head += n ;
1464
1465
} else {
1466
+ int i ;
1467
+
1465
1468
for (i = count , p = cp , f = fp ; i ; i -- , p ++ ) {
1466
1469
if (f )
1467
1470
flags = * f ++ ;
0 commit comments