| 711 | } |
| 712 | |
| 713 | void NFS3::FreeFRD(const std::shared_ptr<TRACK> &track) { |
| 714 | // Free FRD data |
| 715 | // TRKBLOCKs |
| 716 | for (uint32_t block_Idx = 0; block_Idx < track->nBlocks; block_Idx++) { |
| 717 | TRKBLOCK *trackBlock = &(track->trk[block_Idx]); |
| 718 | delete[]trackBlock->vert; |
| 719 | delete[]trackBlock->unknVertices; |
| 720 | delete[]trackBlock->posData; |
| 721 | delete[] trackBlock->polyData; |
| 722 | delete[] trackBlock->vroadData; |
| 723 | if (trackBlock->nXobj > 0) { |
| 724 | delete[]trackBlock->xobj; |
| 725 | } |
| 726 | if (trackBlock->nSoundsrc > 0) { |
| 727 | delete[]trackBlock->soundsrc; |
| 728 | } |
| 729 | if (trackBlock->nLightsrc > 0) { |
| 730 | delete[]trackBlock->lightsrc; |
| 731 | } |
| 732 | //delete trackBlock; |
| 733 | } |
| 734 | //delete []track->trk; |
| 735 | |
| 736 | // POLYGONBLOCKs |
| 737 | for (uint32_t block_Idx = 0; block_Idx < track->nBlocks; block_Idx++) { |
| 738 | POLYGONBLOCK *p = &(track->poly[block_Idx]); |
| 739 | for (uint32_t j = 0; j < 7; j++) { |
| 740 | if (p->sz[j] != 0) { |
| 741 | free(p->poly[j]); |
| 742 | } |
| 743 | } |
| 744 | for (uint32_t obj_Idx = 0; obj_Idx < 4; obj_Idx++) { |
| 745 | OBJPOLYBLOCK *o = &(p->obj[obj_Idx]); |
| 746 | if (o->n1 > 0) { |
| 747 | delete[]o->types; |
| 748 | delete[]o->numpoly; |
| 749 | for (uint32_t k = 0; k < o->n2; k++) { |
| 750 | if (o->types[k] == 1) { |
| 751 | // free(o->poly[o->nobj]); |
| 752 | } |
| 753 | } |
| 754 | } |
| 755 | } |
| 756 | } |
| 757 | |
| 758 | // XOBJBLOCKs |
| 759 | for (uint32_t xblock_Idx = 0; xblock_Idx <= 4 * track->nBlocks; xblock_Idx++) { |
| 760 | if (track->xobj[xblock_Idx].nobj > 0) { |
| 761 | delete[]track->xobj[xblock_Idx].obj; |
| 762 | } |
| 763 | for (uint32_t xobj_Idx = 0; xobj_Idx < track->xobj[xblock_Idx].nobj; xobj_Idx++) { |
| 764 | XOBJDATA *x = &(track->xobj[xblock_Idx].obj[xobj_Idx]); |
| 765 | if (x->crosstype == 3) { // animated objects |
| 766 | delete[]x->animData; |
| 767 | } |
| 768 | //delete[]x->vert; |
| 769 | delete[]x->unknVertices; |
| 770 | delete[]x->polyData; |
nothing calls this directly
no outgoing calls
no test coverage detected