Merge pull request #4692 from janisozaur/fixes

Memory handling fixes
This commit is contained in:
Ted John 2016-10-23 22:55:30 +01:00 committed by GitHub
commit e47035d4e9
5 changed files with 27 additions and 5 deletions

View File

@ -101,7 +101,11 @@ public:
~FileScannerBase() override ~FileScannerBase() override
{ {
Memory::Free(_rootPath); Memory::Free(_rootPath);
Memory::FreeArray(_patterns, _numPatterns); for (size_t i = 0; i < _numPatterns; i++)
{
Memory::Free(_patterns[i]);
}
Memory::Free(_patterns);
Memory::Free(_currentPath); Memory::Free(_currentPath);
Memory::Free(_currentFileInfo); Memory::Free(_currentFileInfo);
} }
@ -311,7 +315,9 @@ protected:
DirectoryChild child = CreateChild(path, node); DirectoryChild child = CreateChild(path, node);
children.push_back(child); children.push_back(child);
} }
free(namelist[i]);
} }
free(namelist);
} }
} }

View File

@ -35,6 +35,21 @@ utf8 * IStream::ReadString()
return resultString; return resultString;
} }
std::string IStream::ReadStdString()
{
std::vector<utf8> result;
uint8 ch;
while ((ch = ReadValue<uint8>()) != 0)
{
result.push_back(ch);
}
result.push_back(0);
std::string resultString(result.data(), result.data() + result.size());
return resultString;
}
void IStream::WriteString(const utf8 * str) void IStream::WriteString(const utf8 * str)
{ {
if (str == nullptr) if (str == nullptr)

View File

@ -107,6 +107,7 @@ interface IStream
} }
utf8 * ReadString(); utf8 * ReadString();
std::string ReadStdString();
void WriteString(const utf8 * str); void WriteString(const utf8 * str);
void WriteString(const std::string &string); void WriteString(const std::string &string);
}; };

View File

@ -284,10 +284,10 @@ private:
for (uint32 i = 0; i < header.NumItems; i++) for (uint32 i = 0; i < header.NumItems; i++)
{ {
TrackRepositoryItem item; TrackRepositoryItem item;
item.Name = fs.ReadString(); item.Name = fs.ReadStdString();
item.Path = fs.ReadString(); item.Path = fs.ReadStdString();
item.RideType = fs.ReadValue<uint8>(); item.RideType = fs.ReadValue<uint8>();
item.ObjectEntry = fs.ReadString(); item.ObjectEntry = fs.ReadStdString();
item.Flags = fs.ReadValue<uint32>(); item.Flags = fs.ReadValue<uint32>();
_items.push_back(item); _items.push_back(item);
} }

View File

@ -64,7 +64,7 @@ static rct_window_event_list window_tooltip_events = {
NULL NULL
}; };
static utf8 _tooltipText[512]; static utf8 _tooltipText[sizeof(gCommonStringFormatBuffer)];
static sint16 _tooltipNumLines; static sint16 _tooltipNumLines;
void window_tooltip_reset(int x, int y) void window_tooltip_reset(int x, int y)