From c716cfee48579db4b8635e33d5d4aaa8579fd73b Mon Sep 17 00:00:00 2001
From: Florian Uhlig <f.uhlig@gsi.de>
Date: Thu, 11 Feb 2021 17:47:22 +0100
Subject: [PATCH] MQ: Add gFile + gDirectory protection

---
 MQ/histoServer/CbmMqHistoServer.cxx | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/MQ/histoServer/CbmMqHistoServer.cxx b/MQ/histoServer/CbmMqHistoServer.cxx
index b72d29b960..0ec75bbed1 100644
--- a/MQ/histoServer/CbmMqHistoServer.cxx
+++ b/MQ/histoServer/CbmMqHistoServer.cxx
@@ -388,11 +388,13 @@ bool CbmMqHistoServer::PrepareCanvas(uint32_t uCanvIdx) {
 }
 
 bool CbmMqHistoServer::SaveHistograms() {
+  /// Save old global file and folder pointer to avoid messing with FairRoot
+  TFile* oldFile     = gFile;
+  TDirectory* oldDir = gDirectory;
+
   /// (Re-)Create ROOT file to store the histos
-  TDirectory* oldDir = NULL;
-  TFile* histoFile   = NULL;
-  // Store current directory position to allow restore later
-  oldDir = gDirectory;
+  TFile* histoFile = nullptr;
+
   // open separate histo file in recreate mode
   histoFile = new TFile(fsHistoFileName.data(), "RECREATE");
 
@@ -423,8 +425,10 @@ bool CbmMqHistoServer::SaveHistograms() {
     histoFile->cd();
   }  // for( UInt_t uHisto = 0; uHisto < fvCanvas.size(); ++uHisto )
 
-  // Restore original directory position
-  oldDir->cd();
+  /// Restore old global file and folder pointer to avoid messing with FairRoot
+  gFile      = oldFile;
+  gDirectory = oldDir;
+
   histoFile->Close();
 
   return true;
-- 
GitLab