summaryrefslogtreecommitdiff
path: root/ace/Timer_Heap_T.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Timer_Heap_T.cpp')
-rw-r--r--ace/Timer_Heap_T.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/ace/Timer_Heap_T.cpp b/ace/Timer_Heap_T.cpp
index fb495f0245b..5ee5ad53388 100644
--- a/ace/Timer_Heap_T.cpp
+++ b/ace/Timer_Heap_T.cpp
@@ -71,7 +71,6 @@ ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Heap_T (size_t size,
: INHERITED (upcall_functor, freelist),
max_size_ (size),
cur_size_ (0),
- iterator_ (*this),
timer_ids_freelist_ (0),
preallocated_nodes_ (0),
preallocated_nodes_freelist_ (0)
@@ -110,6 +109,8 @@ ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Heap_T (size_t size,
this->preallocated_nodes_freelist_ =
&this->preallocated_nodes_[0];
}
+
+ iterator_ = new HEAP_ITERATOR(*this);
}
template <class TYPE, class FUNCTOR, class LOCK>
@@ -118,7 +119,6 @@ ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Heap_T (FUNCTOR *upcall_functor
: INHERITED (upcall_functor, freelist),
max_size_ (ACE_DEFAULT_TIMERS),
cur_size_ (0),
- iterator_ (*this),
timer_ids_freelist_ (0),
preallocated_nodes_ (0),
preallocated_nodes_freelist_ (0)
@@ -136,6 +136,8 @@ ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Heap_T (FUNCTOR *upcall_functor
// array.
for (size_t i = 0; i < this->max_size_; i++)
this->timer_ids_[i] = -((long) (i + 1));
+
+ iterator_ = new HEAP_ITERATOR(*this);
}
@@ -144,6 +146,8 @@ ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::~ACE_Timer_Heap_T (void)
{
ACE_TRACE ("ACE_Timer_Heap::~ACE_Timer_Heap");
+ delete iterator_;
+
// Clean up all the nodes still in the queue
for (size_t i = 0; i < this->cur_size_; i++)
{
@@ -220,7 +224,7 @@ ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::is_empty (void) const
template <class TYPE, class FUNCTOR, class LOCK> ACE_Timer_Queue_Iterator_T<TYPE, FUNCTOR, LOCK> &
ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::iter (void)
{
- return this->iterator_;
+ return *this->iterator_;
}
// Returns earliest time in a non-empty queue.