aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/Collision/MCCProcess.cpp
diff options
context:
space:
mode:
authorGravatar Axel Huebl <axel.huebl@plasma.ninja> 2021-11-11 17:21:44 -0800
committerGravatar GitHub <noreply@github.com> 2021-11-12 01:21:44 +0000
commit459e02a2b6c0a037dd459625da4ec08786540b92 (patch)
tree8ffb957e71aabeb0c480b2b925962cd6b58acd1c /Source/Particles/Collision/MCCProcess.cpp
parentc33d37e34fa827dae9fa71e2e2dcfd273d182e30 (diff)
downloadWarpX-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.cpp7
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