diff options
author | 2021-11-11 17:21:44 -0800 | |
---|---|---|
committer | 2021-11-12 01:21:44 +0000 | |
commit | 459e02a2b6c0a037dd459625da4ec08786540b92 (patch) | |
tree | 8ffb957e71aabeb0c480b2b925962cd6b58acd1c /Source/Particles/Collision/MCCProcess.cpp | |
parent | c33d37e34fa827dae9fa71e2e2dcfd273d182e30 (diff) | |
download | WarpX-459e02a2b6c0a037dd459625da4ec08786540b92.tar.gz WarpX-459e02a2b6c0a037dd459625da4ec08786540b92.tar.zst WarpX-459e02a2b6c0a037dd459625da4ec08786540b92.zip |
std::ifstream: Defensive Patterns (#2547)
Add failure handling if inputs in `std::ifstream`s cannot be opened
or have problems seek-ing through them.
This should catch I/O errors early.
Diffstat (limited to '')
-rw-r--r-- | Source/Particles/Collision/MCCProcess.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/Source/Particles/Collision/MCCProcess.cpp b/Source/Particles/Collision/MCCProcess.cpp index 383ceb815..a059dd2f5 100644 --- a/Source/Particles/Collision/MCCProcess.cpp +++ b/Source/Particles/Collision/MCCProcess.cpp @@ -97,14 +97,15 @@ MCCProcess::readCrossSectionFile ( amrex::Gpu::HostVector<amrex::Real>& sigmas ) { std::ifstream infile(cross_section_file); + if(!infile.is_open()) amrex::Abort("Failed to open cross-section data file"); + double energy, sigma; while (infile >> energy >> sigma) { energies.push_back(energy); sigmas.push_back(sigma); } - AMREX_ALWAYS_ASSERT_WITH_MESSAGE(energies.size() > 1, - "Failed to read cross-section data from file." - ); + if (infile.bad()) amrex::Abort("Failed to read cross-section data from file."); + infile.close(); } void |