From 89153db246e4193526210363bf5a0f1719ea40c3 Mon Sep 17 00:00:00 2001 From: Weiqun Zhang Date: Mon, 31 Jan 2022 10:54:04 -0800 Subject: [PATCH] Fix I/O bug in Amr class (#2609) The file stream for the header must be closed before the parent directory can be renamed. Closes #2608 --- Src/Amr/AMReX_Amr.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Src/Amr/AMReX_Amr.cpp b/Src/Amr/AMReX_Amr.cpp index afdb6db8474..66ec4664c5a 100644 --- a/Src/Amr/AMReX_Amr.cpp +++ b/Src/Amr/AMReX_Amr.cpp @@ -1037,7 +1037,8 @@ Amr::writePlotFileDoit (std::string const& pltfile, bool regular) } else { ParallelDescriptor::Barrier("Amr::writePlotFile::end"); if(ParallelDescriptor::IOProcessor()) { - std::rename(pltfileTemp.c_str(), pltfile.c_str()); + HeaderFile.close(); + std::rename(pltfileTemp.c_str(), pltfile.c_str()); } ParallelDescriptor::Barrier("Renaming temporary plotfile."); // @@ -1865,6 +1866,7 @@ Amr::checkPoint () } else { ParallelDescriptor::Barrier("Amr::checkPoint::end"); if(ParallelDescriptor::IOProcessor()) { + HeaderFile.close(); std::rename(ckfileTemp.c_str(), ckfile.c_str()); } ParallelDescriptor::Barrier("Renaming temporary checkPoint file.");