diff --git a/lldb/source/Core/Broadcaster.cpp b/lldb/source/Core/Broadcaster.cpp index 31b26b4bacf7ed7c1c7249f6e8a21024ee202d0b..647367e17c2ed6474745d58a231a15f300fbff6c 100644 --- a/lldb/source/Core/Broadcaster.cpp +++ b/lldb/source/Core/Broadcaster.cpp @@ -214,6 +214,16 @@ Broadcaster::PrivateBroadcastEvent (EventSP &event_sp, bool unique) const uint32_t event_type = event_sp->GetType(); Mutex::Locker event_types_locker(m_listeners_mutex); + + Listener *hijacking_listener = NULL; + if (!m_hijacking_listeners.empty()) + { + assert (!m_hijacking_masks.empty()); + hijacking_listener = m_hijacking_listeners.back(); + if ((event_type & m_hijacking_masks.back()) == 0) + hijacking_listener = NULL; + } + LogSP log(lldb_private::GetLogIfAnyCategoriesSet (LIBLLDB_LOG_EVENTS)); if (log) { @@ -224,12 +234,11 @@ Broadcaster::PrivateBroadcastEvent (EventSP &event_sp, bool unique) m_broadcaster_name.AsCString(""), event_description.GetData(), unique, - m_hijacking_listeners.back()); + hijacking_listener); } - if (m_hijacking_listeners.size() > 0 && m_hijacking_masks.back() & event_type) + if (hijacking_listener) { - Listener *hijacking_listener = m_hijacking_listeners.back(); // FIXME: REMOVE THIS EXTRA LOGGING LogSP log_process(lldb_private::GetLogIfAnyCategoriesSet (LIBLLDB_LOG_PROCESS)); if (log_process)