From 5fc3076fd7af5b2755ca6371224e636fd3ab4e9b Mon Sep 17 00:00:00 2001
From: Florent Berthaut <florent.berthaut@univ-lille.fr>
Date: Thu, 11 Jan 2024 15:21:23 +0100
Subject: [PATCH] Fix remove path crash

---
 src/Reveal.cpp                     | 1 +
 src/modules/RevealedPathModule.cpp | 6 ++++++
 src/modules/RevealedPathModule.hpp | 2 ++
 3 files changed, 9 insertions(+)

diff --git a/src/Reveal.cpp b/src/Reveal.cpp
index 478110c..85e9518 100644
--- a/src/Reveal.cpp
+++ b/src/Reveal.cpp
@@ -629,6 +629,7 @@ void Reveal::testDelete() {
     }
     m_listenersDeleteVec.clear();
 
+
     if(m_modulesDeleteVec.size()>0) {
         MainWindow::getInstance()->refreshModules(true, erasedListeners);
     }
diff --git a/src/modules/RevealedPathModule.cpp b/src/modules/RevealedPathModule.cpp
index 46b6492..bcd769b 100644
--- a/src/modules/RevealedPathModule.cpp
+++ b/src/modules/RevealedPathModule.cpp
@@ -87,6 +87,12 @@ RevealedPathModule::RevealedPathModule(): RevealedModule() {
 
 RevealedPathModule::~RevealedPathModule() {
     Reveal::getInstance()->unregisterGeom(m_pathGeom);
+    Reveal::getInstance()->removeModuleListObserver(this);
+}
+
+void RevealedPathModule::deleteModule() {
+    RevealedModule::deleteModule();
+    Reveal::getInstance()->removeModuleListObserver(this);
 }
 
 void RevealedPathModule::load(xmlNodePtr node) {
diff --git a/src/modules/RevealedPathModule.hpp b/src/modules/RevealedPathModule.hpp
index c815025..d2d3c68 100644
--- a/src/modules/RevealedPathModule.hpp
+++ b/src/modules/RevealedPathModule.hpp
@@ -34,6 +34,8 @@ class RevealedPathModule : public RevealedModule, public ModuleListObserver {
         RevealedPathModule();
         virtual ~RevealedPathModule();
 
+        virtual void deleteModule();
+
         virtual void load(xmlNodePtr node);
         virtual xmlNodePtr save(xmlNodePtr parentNode);
 
-- 
GitLab