From 34cf068650364330a5cfa4703ade445be64b5656 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98ystein=20Dale?= Date: Tue, 17 Jul 2018 23:27:16 +0200 Subject: [PATCH] Fix memory leak when deserialising objects Assigning a pointer to std::string appears to only perform a copy and does not transfer ownership of the pointer, thus the allocated memory is will never be freed. Use IStream::ReadStdString instead to return a std::string directly, thus transferring ownership correctly. --- src/openrct2/object/ObjectRepository.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/openrct2/object/ObjectRepository.cpp b/src/openrct2/object/ObjectRepository.cpp index 0412128b96..66e032c095 100644 --- a/src/openrct2/object/ObjectRepository.cpp +++ b/src/openrct2/object/ObjectRepository.cpp @@ -156,8 +156,8 @@ protected: ObjectRepositoryItem item; item.ObjectEntry = stream->ReadValue(); - item.Path = stream->ReadString(); - item.Name = stream->ReadString(); + item.Path = stream->ReadStdString(); + item.Name = stream->ReadStdString(); switch (object_entry_get_type(&item.ObjectEntry)) { case OBJECT_TYPE_RIDE: