aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Weiqun Zhang <WeiqunZhang@lbl.gov> 2021-10-07 15:01:15 -0700
committerGravatar GitHub <noreply@github.com> 2021-10-07 15:01:15 -0700
commit6b4e12d2e9efda40e6b449c848fe9892a0e38dbc (patch)
tree9e32500b9235d8804201dfbb5114bfd28e995596
parent153ee5bdb3bdd36d74c07a573394d1ec21d72485 (diff)
downloadWarpX-6b4e12d2e9efda40e6b449c848fe9892a0e38dbc.tar.gz
WarpX-6b4e12d2e9efda40e6b449c848fe9892a0e38dbc.tar.zst
WarpX-6b4e12d2e9efda40e6b449c848fe9892a0e38dbc.zip
Fix memory leak in I/O in rz mode (#2391)
A temporary MultiFab was not properly deleted.
-rw-r--r--Source/Diagnostics/FieldIO.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/Source/Diagnostics/FieldIO.cpp b/Source/Diagnostics/FieldIO.cpp
index 5f7de7f71..f80c901f4 100644
--- a/Source/Diagnostics/FieldIO.cpp
+++ b/Source/Diagnostics/FieldIO.cpp
@@ -148,20 +148,19 @@ AverageAndPackScalarField (MultiFab& mf_avg,
const DistributionMapping& dm,
const int dcomp, const IntVect ngrow )
{
+ const MultiFab *scalar_total = &scalar_field;
#ifdef WARPX_DIM_RZ
- MultiFab *scalar_total;
+ MultiFab tmp;
if (scalar_field.nComp() > 1) {
// With the RZ solver, there are more than one component, so the total
// fields needs to be constructed in temporary a MultiFab.
- scalar_total = new MultiFab(scalar_field.boxArray(), dm, 1, scalar_field.nGrowVect());
- ConstructTotalRZScalarField(*scalar_total, scalar_field);
- } else {
- scalar_total = new MultiFab(scalar_field, amrex::make_alias, 0, 1);
+ tmp.define(scalar_field.boxArray(), dm, 1, scalar_field.nGrowVect());
+ ConstructTotalRZScalarField(tmp, scalar_field);
+ scalar_total = &tmp;
}
#else
amrex::ignore_unused(dm);
- const MultiFab *scalar_total = &scalar_field;
#endif
// Check the type of staggering of the 3-component `vector_field`