ndb - bug#18295

  rewrite/clean up code a bit to avoid a gcc4 compiler bug
parent ae1bb1bd
......@@ -312,15 +312,16 @@ inline
void
DLFifoListImpl<P,T,U>::release()
{
Ptr<T> p;
while(head.firstItem != RNIL)
Ptr<T> ptr;
Uint32 curr = head.firstItem;
while(curr != RNIL)
{
p.i = head.firstItem;
p.p = thePool.getPtr(head.firstItem);
T * t = p.p;
head.firstItem = t->U::nextList;
release(p);
thePool.getPtr(ptr, curr);
curr = ptr.p->U::nextList;
thePool.release(ptr);
}
head.firstItem = RNIL;
head.lastItem = RNIL;
}
template <typename P, typename T, typename U>
......
......@@ -332,12 +332,14 @@ void
DLListImpl<P,T,U>::release()
{
Ptr<T> ptr;
while((ptr.i = head.firstItem) != RNIL)
Uint32 curr = head.firstItem;
while(curr != RNIL)
{
thePool.getPtr(ptr);
head.firstItem = ptr.p->U::nextList;
thePool.getPtr(ptr, curr);
curr = ptr.p->U::nextList;
thePool.release(ptr);
}
head.firstItem = RNIL;
}
template <typename P, typename T, typename U>
......
......@@ -302,12 +302,14 @@ void
SLListImpl<P, T, U>::release()
{
Ptr<T> ptr;
while((ptr.i = head.firstItem) != RNIL)
Uint32 curr = head.firstItem;
while(curr != RNIL)
{
thePool.getPtr(ptr);
head.firstItem = ptr.p->U::nextList;
thePool.getPtr(ptr, curr);
curr = ptr.p->U::nextList;
thePool.release(ptr);
}
head.firstItem = RNIL;
}
template <typename P, typename T, typename U>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment