ntdll: Correct space/mark parity.

When CMSPAR is defined, the space and mark parity is reversed: the flag PARODD isn't set correctly.

Signed-off-by: Julien D'ascenzio <Julien.Dascenzio@paratronic.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
stable
Julien D'ascenzio 2019-02-04 08:08:06 +00:00 committed by Alexandre Julliard
parent 5bfbcb735b
commit 257850e7ec
1 changed files with 4 additions and 4 deletions

View File

@ -280,8 +280,8 @@ static NTSTATUS get_line_control(int fd, SERIAL_LINE_CONTROL* slc)
case PARENB: slc->Parity = EVENPARITY; break;
case PARENB|PARODD: slc->Parity = ODDPARITY; break;
#ifdef CMSPAR
case PARENB|CMSPAR: slc->Parity = MARKPARITY; break;
case PARENB|PARODD|CMSPAR: slc->Parity = SPACEPARITY; break;
case PARENB|PARODD|CMSPAR: slc->Parity = MARKPARITY; break;
case PARENB|CMSPAR: slc->Parity = SPACEPARITY; break;
#endif
}
switch (port.c_cflag & CSIZE)
@ -676,8 +676,8 @@ static NTSTATUS set_line_control(int fd, const SERIAL_LINE_CONTROL* slc)
case EVENPARITY: port.c_cflag |= PARENB; break;
#ifdef CMSPAR
/* Linux defines mark/space (stick) parity */
case MARKPARITY: port.c_cflag |= PARENB | CMSPAR; break;
case SPACEPARITY: port.c_cflag |= PARENB | PARODD | CMSPAR; break;
case MARKPARITY: port.c_cflag |= PARENB | PARODD | CMSPAR; break;
case SPACEPARITY: port.c_cflag |= PARENB | CMSPAR; break;
#else
/* try the POSIX way */
case MARKPARITY: