diff --git a/simulators/c++2/src_simulator/sim/Simulator.cpp b/simulators/c++2/src_simulator/sim/Simulator.cpp
index 59e2ae861455924f1c0153acd0b9ca60a019339a..e7d834c3f5379f14fa194f56eebc4bd12053ca03 100644
--- a/simulators/c++2/src_simulator/sim/Simulator.cpp
+++ b/simulators/c++2/src_simulator/sim/Simulator.cpp
@@ -570,9 +570,9 @@ ServerIF* Simulator::run(int iLen, char ** iArgs){
 					decodeCommand(aNextCmd, aXmlOutFile);
 					getline(iss, aNextCmd, ';');
 				}
+				aXmlOutFile.close();
 			}else
 				std::cout << "XML output file could not be opened, aborting.\n";
-			aXmlOutFile.close();
 		}
 		rusage res;
 		getrusage(RUSAGE_SELF, &res);