From 2f827bfae53af65f97e5b5f1e7c44f7880e880d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A5rd=20Skaflestad?= Date: Fri, 24 Jan 2020 20:44:26 +0100 Subject: [PATCH] Don't Index Out of Bounds The phaseIsActive_ array has size numPhases. We must not form the expression phaseIsActive_[numPhases]. Switch to using fill_n in place of fill lest we have to write fill(&phaseIsActive_[0], &phaseIsActive_[0] + numPhases, v) --- opm/material/fluidsystems/BlackOilFluidSystem.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opm/material/fluidsystems/BlackOilFluidSystem.hpp b/opm/material/fluidsystems/BlackOilFluidSystem.hpp index b366d3912..d4ce287ac 100644 --- a/opm/material/fluidsystems/BlackOilFluidSystem.hpp +++ b/opm/material/fluidsystems/BlackOilFluidSystem.hpp @@ -181,7 +181,7 @@ public: initBegin(numRegions); numActivePhases_ = 0; - std::fill(&phaseIsActive_[0], &phaseIsActive_[numPhases], false); + std::fill_n(&phaseIsActive_[0], numPhases, false); if (deck.hasKeyword("OIL")) { phaseIsActive_[oilPhaseIdx] = true; @@ -268,7 +268,7 @@ public: setReservoirTemperature(surfaceTemperature); numActivePhases_ = numPhases; - std::fill(&phaseIsActive_[0], &phaseIsActive_[numPhases], true); + std::fill_n(&phaseIsActive_[0], numPhases, true); resizeArrays_(numPvtRegions); }