mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-24 00:03:11 +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)
|
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[]>(
|
||||||
std::unique_ptr<rct_g1_element_32bit[]> openElements = std::make_unique<rct_g1_element_32bit[]>(openEntryTableSize);
|
spriteFileHeader.num_entries);
|
||||||
if (openElements == nullptr)
|
if (openElements == nullptr)
|
||||||
{
|
{
|
||||||
fclose(file);
|
fclose(file);
|
||||||
return false;
|
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);
|
fclose(file);
|
||||||
return false;
|
return false;
|
||||||
@@ -148,8 +148,8 @@ static bool sprite_file_save(const char* path)
|
|||||||
|
|
||||||
if (spriteFileHeader.num_entries > 0)
|
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[]>(
|
||||||
std::unique_ptr<rct_g1_element_32bit[]> saveElements = std::make_unique<rct_g1_element_32bit[]>(saveEntryTableSize);
|
spriteFileHeader.num_entries);
|
||||||
if (saveElements == nullptr)
|
if (saveElements == nullptr)
|
||||||
{
|
{
|
||||||
fclose(file);
|
fclose(file);
|
||||||
@@ -171,7 +171,7 @@ static bool sprite_file_save(const char* path)
|
|||||||
outElement->zoomed_offset = inElement->zoomed_offset;
|
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);
|
fclose(file);
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user