X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fplatform%2Fposix%2Fserialport.cpp;h=cefc21201ef03ee41d17feea11e5cdc3aac9e529;hb=95acc41b63e3a1f0af9295cbe5adc1210feefb79;hp=31ae09b1cdd2d58261f25f92acbab9f587a84be0;hpb=f99b4d1a21d99436a3e49733e7b83276a6362cbf;p=deb_libcec.git diff --git a/src/lib/platform/posix/serialport.cpp b/src/lib/platform/posix/serialport.cpp index 31ae09b..cefc212 100644 --- a/src/lib/platform/posix/serialport.cpp +++ b/src/lib/platform/posix/serialport.cpp @@ -53,29 +53,32 @@ using namespace PLATFORM; void CSerialSocket::Close(void) { - SocketClose(m_socket); + if (IsOpen()) + SocketClose(m_socket); } void CSerialSocket::Shutdown(void) { - SocketClose(m_socket); + if (IsOpen()) + SocketClose(m_socket); } ssize_t CSerialSocket::Write(void* data, size_t len) { - return SocketWrite(m_socket, &m_iError, data, len); + return IsOpen() ? SocketWrite(m_socket, &m_iError, data, len) : -1; } ssize_t CSerialSocket::Read(void* data, size_t len, uint64_t iTimeoutMs /* = 0 */) { - return SocketRead(m_socket, &m_iError, data, len, iTimeoutMs); + return IsOpen() ? SocketRead(m_socket, &m_iError, data, len, iTimeoutMs) : -1; } //setting all this stuff up is a pain in the ass bool CSerialSocket::Open(uint64_t iTimeoutMs /* = 0 */) { iTimeoutMs = 0; - CLockObject lock(m_mutex); + if (IsOpen()) + return false; if (m_iDatabits != SERIAL_DATA_BITS_FIVE && m_iDatabits != SERIAL_DATA_BITS_SIX && m_iDatabits != SERIAL_DATA_BITS_SEVEN && m_iDatabits != SERIAL_DATA_BITS_EIGHT)