From 6b4e12d2e9efda40e6b449c848fe9892a0e38dbc Mon Sep 17 00:00:00 2001 From: Weiqun Zhang Date: Thu, 7 Oct 2021 15:01:15 -0700 Subject: Fix memory leak in I/O in rz mode (#2391) A temporary MultiFab was not properly deleted. --- Source/Diagnostics/FieldIO.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'Source/Diagnostics/FieldIO.cpp') 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` -- cgit v1.2.3