*/
void Time_ScheduleTimer(tTimer *Timer, int Delta)
{
- tTimer *t, *p;
+ tTimer *t;
+ tTimer **prev_next;
// Sanity checks
if( !Timer ) return ;
// Add into list (sorted)
SHORTLOCK(&gTimers_ListLock);
// Mutex_Release( &Timer->Lock ); // Prevent deadlocks
- for( p = (tTimer*)&gTimers, t = gTimers; t; p = t, t = t->Next )
+ for( prev_next = &gTimers, t = gTimers; t; prev_next = &t->Next, t = t->Next )
{
- ASSERT( p != t ); ASSERT( CheckMem(t, sizeof(tTimer)) );
+ ASSERTC( *prev_next, !=, t );
+ ASSERT( CheckMem(t, sizeof(tTimer)) );
if( t == Timer )
{
LOG("Double schedule - increasing delta");
if( t->FiresAfter > Timer->FiresAfter ) break;
}
Timer->Next = t;
- p->Next = Timer;
+ *prev_next = Timer;
Timer->bActive = 1;
- LOG(" %p %p %p", p, Timer, t);
+ LOG(" %p %p %p", prev_next, Timer, t);
SHORTREL(&gTimers_ListLock);
}
*/
void Time_RemoveTimer(tTimer *Timer)
{
- tTimer *t, *p;
+ tTimer *t;
+ tTimer **prev_next;
if( !Timer ) return ;
SHORTLOCK(&gTimers_ListLock);
- for( p = (tTimer*)&gTimers, t = gTimers; t; p = t, t = t->Next )
+ for( prev_next = &gTimers, t = gTimers; t; prev_next = &t->Next, t = t->Next )
{
- ASSERT( p != t ); ASSERT( CheckMem(t, sizeof(tTimer)) );
+ ASSERT( *prev_next != t ); ASSERT( CheckMem(t, sizeof(tTimer)) );
if( t == Timer )
{
- p->Next = t->Next;
+ *prev_next = t->Next;
break ;
}
}