void FiniLabels( int label_type ) { //==================================== // Free specified class of labels. label_entry **owner; label_entry *curr; owner = (label_entry **)&LabelList; for(;;) { curr = *owner; if( curr == NULL ) break; if( ( curr->label & FORMAT_LABEL ) == label_type ) { if( ( CGFlags & CG_FATAL ) == 0 ) { if( curr->label & FORMAT_LABEL ) { BEFiniBack( curr->handle ); BEFreeBack( curr->handle ); } else { InfoError( CP_ERROR, "unfreed label" ); BEFiniLabel( curr->handle ); } } *owner = curr->link; FMemFree( curr ); } else { owner = &curr->link; } } }
void FiniSegLabels( void ) /* 15-mar-92 */ { struct user_seg *useg; SYM_ENTRY sym; for( useg = UserSegments; useg; useg = useg->next ) { if( useg->sym_handle != 0 ) { SymGet( &sym, useg->sym_handle ); BEFiniBack( sym.info.backinfo ); } } }