diff --git a/src/impl/unix.cc b/src/impl/unix.cc index 610e47c..d464bd3 100755 --- a/src/impl/unix.cc +++ b/src/impl/unix.cc @@ -437,8 +437,14 @@ Serial::SerialImpl::close () { if (is_open_ == true) { if (fd_ != -1) { - ::close (fd_); // Ignoring the outcome - fd_ = -1; + int retVal; + retVal=::close (fd_); + if (retVal==0) + fd_ = -1; + else + { + THROW (IOException, errno); + } } is_open_ = false; } diff --git a/src/impl/win.cc b/src/impl/win.cc index a59a4d0..d8ecb3d 100644 --- a/src/impl/win.cc +++ b/src/impl/win.cc @@ -260,7 +260,15 @@ Serial::SerialImpl::close () { if (is_open_ == true) { if (fd_ != INVALID_HANDLE_VALUE) { - CloseHandle(fd_); + int retVal; + retVal=CloseHandle(fd_); + if (retVal==0) + { + stringstream ss; + ss << "Error while closing serial port: " << GetLastError(); + THROW (IOException, ss.str().c_str()); + } + else fd_ = INVALID_HANDLE_VALUE; } is_open_ = false;