PISerial patch - close on read error

This commit is contained in:
2020-12-06 13:09:29 +03:00
parent 5de87eeed1
commit 3c543e79f0
2 changed files with 11 additions and 2 deletions

View File

@@ -3,7 +3,7 @@ cmake_policy(SET CMP0017 NEW) # need include() with .cmake
project(pip)
set(pip_MAJOR 2)
set(pip_MINOR 15)
set(pip_REVISION 0)
set(pip_REVISION 1)
set(pip_SUFFIX )
set(pip_COMPANY SHS)
set(pip_DOMAIN org.SHS)

View File

@@ -709,7 +709,16 @@ int PISerial::readDevice(void * read_to, int max_size) {
return PRIVATE->readed;
#else
if (!canRead()) return -1;
return ::read(fd, read_to, max_size);
int ret = ::read(fd, read_to, max_size);
if (ret < 0) {
int err = errno;
if (err == EBADF || err == EFAULT || err == EINVAL || err == EIO) {
PIThread::stop(false);
close();
return 0;
}
}
return ret;
#endif
}