From 6423e7e66cb17f381e7a6c4134aeb186bbb4f0c8 Mon Sep 17 00:00:00 2001 From: Xisco Bosch Date: Tue, 25 Apr 2017 15:27:27 +0200 Subject: [PATCH] Memory leak in Scene fixed --- .../source/carla/server/CarlaCommunication.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Source/CarlaServer/source/carla/server/CarlaCommunication.cpp b/Source/CarlaServer/source/carla/server/CarlaCommunication.cpp index 212e94857..51ae2ccfb 100644 --- a/Source/CarlaServer/source/carla/server/CarlaCommunication.cpp +++ b/Source/CarlaServer/source/carla/server/CarlaCommunication.cpp @@ -221,20 +221,21 @@ namespace server { } void CarlaCommunication::sendScene(const Scene_Values &values) { + // Protobuf produces a segmentation fault in the destructor of the Scene // when called from Unreal Engine in Linux. As a workaround, we added this // cute memory leak. /// @todo #10 Fix the memory leak! - Scene *scene = new Scene; - _proto->LoadScene(*scene, values); + + Scene scene; + _proto->LoadScene(scene, values); auto message = std::make_unique(); - if (scene->SerializeToString(message.get())) { + if (scene.SerializeToString(message.get())) { _worldThread.push(std::move(message)); } - free(scene); } void CarlaCommunication::sendReset() {