mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-25 13:35:54 +00:00
Need to do this too.
This commit is contained in:
@@ -82,9 +82,9 @@ public:
|
|||||||
* pointer.
|
* pointer.
|
||||||
*/
|
*/
|
||||||
element_ptr get() {
|
element_ptr get() {
|
||||||
boost::lock_guard<boost::recursive_mutex> lock(m_lock);
|
element_ptr p, q;
|
||||||
|
{
|
||||||
element_ptr p, q;
|
boost::lock_guard<boost::recursive_mutex> lock(m_lock);
|
||||||
|
|
||||||
/*std::cout << "message requested ("
|
/*std::cout << "message requested ("
|
||||||
<< m_cur_elements-m_avaliable.size()
|
<< m_cur_elements-m_avaliable.size()
|
||||||
@@ -93,26 +93,27 @@ public:
|
|||||||
<< ")"
|
<< ")"
|
||||||
<< std::endl;*/
|
<< std::endl;*/
|
||||||
|
|
||||||
if (!m_avaliable.empty()) {
|
if (!m_avaliable.empty()) {
|
||||||
p = m_avaliable.front();
|
p = m_avaliable.front();
|
||||||
q = p;
|
q = p;
|
||||||
m_avaliable.pop(); // FIXME can call intrusive_ptr_release(line 217) which can deadlock
|
m_avaliable.pop(); // FIXME can call intrusive_ptr_release(line 217) which can deadlock
|
||||||
m_used[p->get_index()] = p;
|
m_used[p->get_index()] = p;
|
||||||
} else {
|
} else {
|
||||||
if (m_cur_elements == m_max_elements) {
|
if (m_cur_elements == m_max_elements) {
|
||||||
return element_ptr();
|
return element_ptr();
|
||||||
}
|
}
|
||||||
|
|
||||||
p = element_ptr(new element_type(type::shared_from_this(),m_cur_elements));
|
p = element_ptr(new element_type(type::shared_from_this(),m_cur_elements));
|
||||||
m_cur_elements++;
|
m_cur_elements++;
|
||||||
m_used.push_back(p);
|
m_used.push_back(p);
|
||||||
|
|
||||||
/*std::cout << "Allocated new data message. Count is now "
|
/*std::cout << "Allocated new data message. Count is now "
|
||||||
<< m_cur_elements
|
<< m_cur_elements
|
||||||
<< std::endl;*/
|
<< std::endl;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
p->set_live();
|
p->set_live();
|
||||||
|
}
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
void recycle(element_ptr p) {
|
void recycle(element_ptr p) {
|
||||||
|
|||||||
Reference in New Issue
Block a user