From fbd854e2e98976be9893c1a7b07765260866dc2f Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Wed, 6 Mar 2013 23:30:13 -0800 Subject: [PATCH] Just don't ask. We'll fix this right if this is the issue. --- src/cpp/websocketpp/src/messages/data.hpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/cpp/websocketpp/src/messages/data.hpp b/src/cpp/websocketpp/src/messages/data.hpp index 2a668a4d6..26292bac3 100644 --- a/src/cpp/websocketpp/src/messages/data.hpp +++ b/src/cpp/websocketpp/src/messages/data.hpp @@ -84,7 +84,7 @@ public: element_ptr get() { boost::lock_guard lock(m_lock); - element_ptr p; + element_ptr p, q; /*std::cout << "message requested (" << m_cur_elements-m_avaliable.size() @@ -95,7 +95,8 @@ public: if (!m_avaliable.empty()) { p = m_avaliable.front(); - m_avaliable.pop(); + q = p; + m_avaliable.pop(); // FIXME can call intrusive_ptr_release(line 217) which can deadlock m_used[p->get_index()] = p; } else { if (m_cur_elements == m_max_elements) { @@ -210,6 +211,7 @@ private: typedef websocketpp::processor::hybi_util::masking_key_type masking_key_type; friend void intrusive_ptr_add_ref(const data * s) { + boost::unique_lock lock(s->m_lock); ++s->m_ref_count; }