a bug in list.h

russot wrote on Thursday, October 28, 2004:

in line #157:
"if( ( pxList )->pxIndex == ( pxList )->pxHead )"
should be:
"if( ( pxList )->pxIndex->next == ( pxList )->pxHead )"

this means that current iteration is tail_node;

rtel wrote on Thursday, October 28, 2004:

I cannot see anything wrong as below:

// Increment to the next item in the list
( pxList )->pxIndex = ( pxList )->pxIndex->pxNext;

// We don’t want to point to the head marker as
// it is just a marker and not a genuine list item.
// If we have incremented to the head then …
if( ( pxList )->pxIndex == ( pxList )->pxHead )
{
  // … increment again.  This will take us to the
  // first item in the list.
  ( pxList )->pxIndex = ( pxList )->pxIndex->pxNext;
}                   

// Return the owner of the index - which will
// now not be the list head marker.
pxTCB = ( volatile tskTCB * ) ( pxList )->pxIndex->pvOwner;               

This line is fundamental to the scheduler and if wrong nothing would work - although I am open to counter arguments…