@@ -53,20 +53,20 @@ void CDriver1LevelRegion::LoadRegionData(IVirtualStream* pFile, Spool* spool)
5353 int cellObjectsOffset = cellDataOffset + spool->cell_data_size [0 ];
5454 int pvsDataOffset = cellObjectsOffset + spool->cell_data_size [2 ]; // FIXME: is it even there in Driver 1?
5555
56- char * packed_cell_pointers = new char [spool->cell_data_size [1 ] * SPOOL_CD_BLOCK_SIZE * 2 ];
57- m_cellPointers = new ushort[m_owner-> m_mapInfo . region_size * m_owner-> m_mapInfo . region_size * 2 ];
58-
59- memset (m_cellPointers, 0xFF , sizeof (ushort) * m_owner->m_mapInfo . region_size * m_owner-> m_mapInfo . region_size * 2 );
56+ char * packed_cell_pointers = new char [spool->cell_data_size [1 ] * SPOOL_CD_BLOCK_SIZE];
57+
58+ m_cellPointers = new ushort[m_owner-> m_cell_objects_add [ 2 ]];
59+ memset (m_cellPointers, 0xFF , sizeof (ushort) * m_owner->m_cell_objects_add [ 2 ] );
6060
6161 // read packed cell pointers
6262 pFile->Seek (g_levInfo.spooldata_offset + cellPointersOffset * SPOOL_CD_BLOCK_SIZE, VS_SEEK_SET);
63- pFile->Read (packed_cell_pointers, spool->cell_data_size [1 ] * SPOOL_CD_BLOCK_SIZE * 2 , sizeof (char ));
63+ pFile->Read (packed_cell_pointers, spool->cell_data_size [1 ] * SPOOL_CD_BLOCK_SIZE, sizeof (char ));
6464
6565 // unpack cell pointers so we can use them
6666 if (UnpackCellPointers (m_cellPointers, packed_cell_pointers, 0 , 0 ) != -1 )
6767 {
6868 // read cell data
69- m_cells = (CELL_DATA_D1*)malloc (spool->cell_data_size [0 ] * SPOOL_CD_BLOCK_SIZE * 2 );
69+ m_cells = (CELL_DATA_D1*)malloc (spool->cell_data_size [0 ] * SPOOL_CD_BLOCK_SIZE);
7070 pFile->Seek (g_levInfo.spooldata_offset + cellDataOffset * SPOOL_CD_BLOCK_SIZE, VS_SEEK_SET);
7171 pFile->Read (m_cells, spool->cell_data_size [0 ] * SPOOL_CD_BLOCK_SIZE, sizeof (char ));
7272
0 commit comments