Use unique_ptr for Bitmap_replacement_data

This commit is contained in:
Kp 2014-07-24 02:45:47 +00:00
parent 5826156ff2
commit 940cbceed8

View file

@ -158,7 +158,7 @@ int Pigfile_initialized=0;
#define MAX_BITMAPS_PER_BRUSH 30
ubyte *Bitmap_replacement_data = NULL;
static std::unique_ptr<ubyte[]> Bitmap_replacement_data;
#define DBM_NUM_FRAMES 63
@ -1760,10 +1760,7 @@ static int piggy_is_substitutable_bitmap( char * name, char * subst_name )
static void free_bitmap_replacements()
{
if (Bitmap_replacement_data) {
d_free(Bitmap_replacement_data);
Bitmap_replacement_data = NULL;
}
Bitmap_replacement_data.reset();
}
void load_bitmap_replacements(const char *level_name)
@ -1800,7 +1797,7 @@ void load_bitmap_replacements(const char *level_name)
indices[i] = PHYSFSX_readShort(ifile);
bitmap_data_size = PHYSFS_fileLength(ifile) - PHYSFS_tell(ifile) - sizeof(DiskBitmapHeader) * n_bitmaps;
MALLOC( Bitmap_replacement_data, ubyte, bitmap_data_size );
Bitmap_replacement_data.reset(new ubyte[bitmap_data_size]);
for (i=0;i<n_bitmaps;i++) {
DiskBitmapHeader bmh;
@ -1825,7 +1822,7 @@ void load_bitmap_replacements(const char *level_name)
for (i = 0; i < n_bitmaps; i++)
{
grs_bitmap *bm = &GameBitmaps[indices[i]];
gr_set_bitmap_data(bm, Bitmap_replacement_data + (size_t) bm->bm_data);
gr_set_bitmap_data(bm, &Bitmap_replacement_data[(size_t) bm->bm_data]);
}
PHYSFS_close(ifile);
@ -2132,13 +2129,13 @@ void load_d1_bitmap_replacements()
bitmap_data_start = bitmap_header_start + header_size;
}
MALLOC( Bitmap_replacement_data, ubyte, D1_BITMAPS_SIZE);
Bitmap_replacement_data.reset(new ubyte[D1_BITMAPS_SIZE]);
if (!Bitmap_replacement_data) {
Warning(D1_PIG_LOAD_FAILED);
return;
}
next_bitmap = Bitmap_replacement_data;
next_bitmap = Bitmap_replacement_data.get();
for (d1_index = 1; d1_index <= N_bitmaps; d1_index++ ) {
d2_index = d2_index_for_d1_index(d1_index);
@ -2148,7 +2145,7 @@ void load_d1_bitmap_replacements()
DiskBitmapHeader_d1_read(&bmh, d1_Piggy_fp);
bitmap_read_d1( &GameBitmaps[d2_index], d1_Piggy_fp, bitmap_data_start, &bmh, &next_bitmap, d1_palette, colormap );
Assert(next_bitmap - Bitmap_replacement_data < D1_BITMAPS_SIZE);
Assert(next_bitmap - Bitmap_replacement_data.get() < D1_BITMAPS_SIZE);
GameBitmapOffset[d2_index] = 0; // don't try to read bitmap from current d2 pigfile
GameBitmapFlags[d2_index] = bmh.flags;