diff --git a/include/serial/serial_listener.h b/include/serial/serial_listener.h index 022623b..7e85b4c 100644 --- a/include/serial/serial_listener.h +++ b/include/serial/serial_listener.h @@ -159,6 +159,12 @@ public: ComparatorType comparator_; DataCallback callback_; + +private: + // Disable copy constructors + Filter(const Filter&); + void operator=(const Filter&); + const Filter& operator=(Filter); }; /*! @@ -173,7 +179,7 @@ public: */ typedef boost::shared_ptr FilterPtr; -class BlockingFilter; +class BlockingFilter; // Forward declaration /*! * Shared Pointer of BlockingFilter, returned by @@ -183,7 +189,7 @@ class BlockingFilter; */ typedef boost::shared_ptr BlockingFilterPtr; -class BufferedFilter; +class BufferedFilter; // Forward declaration /*! * Shared Pointer of BufferedFilter, returned by @@ -637,6 +643,10 @@ public: } private: + // Disable copy constructors + SerialListener(const SerialListener&); + void operator=(const SerialListener&); + const SerialListener& operator=(SerialListener); // delimeter tokenizer function static void _delimeter_tokenizer (const std::string &data, diff --git a/src/serial_listener.cc b/src/serial_listener.cc index bc1258d..a7bbe98 100644 --- a/src/serial_listener.cc +++ b/src/serial_listener.cc @@ -52,7 +52,9 @@ SerialListener::callback() { if (this->callback_queue.timed_wait_and_pop(pair, 10)) { if (this->listening) { try { - pair.first->callback_((*pair.second)); + if (pair.first != NULL && pair.second != NULL) { + pair.first->callback_((*pair.second)); + } } catch (std::exception &e) { this->handle_exc(e); }// try callback