1
0
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:
rdbaris
2020-07-17 00:23:05 -04:00
committed by GitHub
parent a2493af9ce
commit 8aa8d77ca1

View File

@@ -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;