void *VstkPush( // PUSH THE STACK VSTK_CTL *stack ) // - stack to be pushed { VSTK_BLK *blk; // - current block void *cur; // - current entry _VstkIntegrity( stack ); if( stack->top == NULL ) { cur = vstkPushBlk( stack ); } else { cur = stack->current; if( cur == NULL ) { cur = vstkPushBlk( stack ); } else { blk = stack->top; if( cur == blk->data ) { cur = vstkPushBlk( stack ); } } } cur = ( char * )cur - stack->size; stack->current = cur; _VstkIntegrity( stack ); DbgZapAlloc( cur, stack->size ); return( cur ); }
void *CarveAlloc( carve_t cv ) /****************************/ { void * p; if( cv->free_list == NULL ) { MakeFreeList( cv, newBlk( cv ), 0 ); } _REMOVE_FROM_FREE( cv, p ); DbgZapAlloc( p, cv->elm_size ); return p; }