mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-10 09:32:29 +01:00
Fix for smart pointer bug (#12293)
Don't allocate a ton of memory on load.
This commit is contained in:
@@ -90,15 +90,15 @@ static bool sprite_file_open(const utf8* path)
|
||||
|
||||
if (spriteFileHeader.num_entries > 0)
|
||||
{
|
||||
int32_t openEntryTableSize = spriteFileHeader.num_entries * sizeof(rct_g1_element_32bit);
|
||||
std::unique_ptr<rct_g1_element_32bit[]> openElements = std::make_unique<rct_g1_element_32bit[]>(openEntryTableSize);
|
||||
std::unique_ptr<rct_g1_element_32bit[]> openElements = std::make_unique<rct_g1_element_32bit[]>(
|
||||
spriteFileHeader.num_entries);
|
||||
if (openElements == nullptr)
|
||||
{
|
||||
fclose(file);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (fread(openElements.get(), openEntryTableSize, 1, file) != 1)
|
||||
if (fread(openElements.get(), spriteFileHeader.num_entries * sizeof(rct_g1_element_32bit), 1, file) != 1)
|
||||
{
|
||||
fclose(file);
|
||||
return false;
|
||||
@@ -148,8 +148,8 @@ static bool sprite_file_save(const char* path)
|
||||
|
||||
if (spriteFileHeader.num_entries > 0)
|
||||
{
|
||||
int32_t saveEntryTableSize = spriteFileHeader.num_entries * sizeof(rct_g1_element_32bit);
|
||||
std::unique_ptr<rct_g1_element_32bit[]> saveElements = std::make_unique<rct_g1_element_32bit[]>(saveEntryTableSize);
|
||||
std::unique_ptr<rct_g1_element_32bit[]> saveElements = std::make_unique<rct_g1_element_32bit[]>(
|
||||
spriteFileHeader.num_entries);
|
||||
if (saveElements == nullptr)
|
||||
{
|
||||
fclose(file);
|
||||
@@ -171,7 +171,7 @@ static bool sprite_file_save(const char* path)
|
||||
outElement->zoomed_offset = inElement->zoomed_offset;
|
||||
}
|
||||
|
||||
if (fwrite(saveElements.get(), saveEntryTableSize, 1, file) != 1)
|
||||
if (fwrite(saveElements.get(), spriteFileHeader.num_entries * sizeof(rct_g1_element_32bit), 1, file) != 1)
|
||||
{
|
||||
fclose(file);
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user