Skip to content

Commit 169ebb7

Browse files
authored
Merge pull request #49 from MetOffice/feature/fix_bug_memory_manag
[bugfix] I/O processing procedure: fixed bug (memory leakage)
2 parents 808e2bf + 7fc13b7 commit 169ebb7

File tree

4 files changed

+12
-6
lines changed

4 files changed

+12
-6
lines changed

src/monio/File.cc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,10 @@ void monio::File::close() {
5353
} else if (fileMode_ == netCDF::NcFile::write) {
5454
oops::Log::debug() << "write" << std::endl;
5555
}
56-
getFile().close();
57-
dataFile_.release();
56+
if (dataFile_ != nullptr) {
57+
getFile().close();
58+
dataFile_.reset();
59+
}
5860
}
5961
// Reading functions ///////////////////////////////////////////////////////////////////////////////
6062

src/monio/Monio.cc

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -319,8 +319,12 @@ void monio::Monio::writeFieldSet(const atlas::FieldSet& localFieldSet,
319319

320320
void monio::Monio::closeFiles() {
321321
oops::Log::trace() << "Monio::closeFiles()" << std::endl;
322-
reader_.closeFile();
323-
writer_.closeFile();
322+
if (reader_.isOpen() == true) {
323+
reader_.closeFile();
324+
}
325+
if (writer_.isOpen() == true) {
326+
writer_.closeFile();
327+
}
324328
}
325329

326330
int monio::Monio::initialiseFile(const atlas::Grid& grid,

src/monio/Reader.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ void monio::Reader::closeFile() {
5959
if (mpiCommunicator_.rank() == mpiRankOwner_) {
6060
if (isOpen() == true) {
6161
getFile().close();
62-
file_.release();
62+
file_.reset();
6363
}
6464
}
6565
}

src/monio/Writer.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ void monio::Writer::closeFile() {
5555
if (mpiCommunicator_.rank() == mpiRankOwner_) {
5656
if (isOpen() == true) {
5757
getFile().close();
58-
file_.release();
58+
file_.reset();
5959
}
6060
}
6161
}

0 commit comments

Comments
 (0)