diff options
author | 2021-10-07 15:01:15 -0700 | |
---|---|---|
committer | 2021-10-07 15:01:15 -0700 | |
commit | 6b4e12d2e9efda40e6b449c848fe9892a0e38dbc (patch) | |
tree | 9e32500b9235d8804201dfbb5114bfd28e995596 | |
parent | 153ee5bdb3bdd36d74c07a573394d1ec21d72485 (diff) | |
download | WarpX-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.cpp | 11 |
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` |