From 97d1e56ca34797634226ebf52f0862393c8e678c Mon Sep 17 00:00:00 2001
From: Andreas Adelmann <andreas.adelmann@psi.ch>
Date: Sun, 23 Jun 2024 19:39:28 +0200
Subject: [PATCH] illeal memory access when delete OpalData

---
 src/AbstractObjects/OpalData.h |  2 +-
 src/Main.cpp                   | 13 ++++++++++---
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/AbstractObjects/OpalData.h b/src/AbstractObjects/OpalData.h
index bcb83da83..3f7b2b4c7 100644
--- a/src/AbstractObjects/OpalData.h
+++ b/src/AbstractObjects/OpalData.h
@@ -258,7 +258,7 @@ public:
 
 private:
     static bool isInstantiated;
-    static OpalData* instance;
+    static OpalData* instance;             // \todo should be a smart pointer and we then should get ridd of deleteInstance
     static std::stack<OpalData*> stashedInstances;
 
     OpalData();
diff --git a/src/Main.cpp b/src/Main.cpp
index 8fbafa2ec..78fdd2d15 100644
--- a/src/Main.cpp
+++ b/src/Main.cpp
@@ -176,7 +176,8 @@ int main(int argc, char* argv[]) {
 
                 if (is) {
                     *gmsg << "Reading startup file '" << startup << "'" << endl;
-                    parser.run(is);
+                    parser.
+                        run(is);
                     *gmsg << "Finished reading startup file." << endl;
                 }
                 FileStream::setEcho(Options::echo);
@@ -379,7 +380,9 @@ int main(int argc, char* argv[]) {
 
         } catch (EarlyLeaveException& ex) {
             // do nothing here
-        } catch (OpalException& ex) {
+        }
+
+        catch (OpalException& ex) {
             Inform errorMsg("Error", std::cerr, INFORM_ALL_NODES);
             errorMsg << "\n*** User error detected by function \"" << ex.where() << "\"\n";
             // stat->printWhere(errorMsg, true);
@@ -489,10 +492,14 @@ int main(int argc, char* argv[]) {
         IpplTimings::print(
             std::string("timing.dat"), OpalData::getInstance()->getProblemCharacteristicValues());
 
+        
         ippl::Comm->barrier();
         Fieldmap::clearDictionary();
-        OpalData::deleteInstance();
+
+        // \todo we should not need this OpalData::deleteInstance();
+
         delete gmsg;
+        ippl::finalize();
         return 0;
     }
 }
-- 
GitLab