diff --git a/CMakeLists.txt b/CMakeLists.txt index 63499225..f1273c74 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/libs/main/io_devices/piserial.cpp b/libs/main/io_devices/piserial.cpp index 07fdded6..203d8e2a 100644 --- a/libs/main/io_devices/piserial.cpp +++ b/libs/main/io_devices/piserial.cpp @@ -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 }