From 4465cccdbdf88c7ea31b92e1eb5d42d16adf6bd7 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Sun, 26 Aug 2018 09:56:02 -0600 Subject: [PATCH] drivers/serial/serial.c: Don't overwrite nwritten unconditionally on UART write failure. --- drivers/serial/serial.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/drivers/serial/serial.c b/drivers/serial/serial.c index ac72e03683..7c1c57aa28 100644 --- a/drivers/serial/serial.c +++ b/drivers/serial/serial.c @@ -1155,19 +1155,14 @@ static ssize_t uart_write(FAR struct file *filep, FAR const char *buffer, if ((ch == '\n') && (dev->tc_oflag & (ONLCR | ONLRET)) != 0) { ret = uart_putxmitchar(dev, '\r', oktoblock); - if (ret < 0) - { - nwritten = ret; - break; - } } /* Specifically not handled: * - * OXTABS - primarily a full-screen terminal optimisation + * OXTABS - primarily a full-screen terminal optimization * ONOEOT - Unix interoperability hack * OLCUC - Not specified by POSIX - * ONOCR - low-speed interactive optimisation + * ONOCR - low-speed interactive optimization */ } @@ -1182,7 +1177,7 @@ static ssize_t uart_write(FAR struct file *filep, FAR const char *buffer, /* Put the character into the transmit buffer */ - if (ret == OK) + if (ret >= 0) { ret = uart_putxmitchar(dev, ch, oktoblock); }