diff --git a/cpp/particles/p2p_distr_mpi.hpp b/cpp/particles/p2p_distr_mpi.hpp
index e567e86f7269c12fad16d061550d4ea2e75ba0e0..274dc8a64137427aeb3ce76aa0efe801a30e586e 100644
--- a/cpp/particles/p2p_distr_mpi.hpp
+++ b/cpp/particles/p2p_distr_mpi.hpp
@@ -580,6 +580,7 @@ public:
                         const partsize_t NbParticlesToReceive = descriptor.nbParticlesToExchange;
                         assert(NbParticlesToReceive != -1);
                         assert(descriptor.toCompute == nullptr);
+                        assert(descriptor.indexes == nullptr);
 
                         if(NbParticlesToReceive){
                             descriptor.toCompute.reset(new real_number[NbParticlesToReceive*size_particle_positions]);
@@ -590,7 +591,7 @@ public:
                                                 particles_utils::GetMpiType(real_number()), destProc, TAG_POSITION_PARTICLES,
                                                 current_com, &mpiRequests.back()));
 
-                            descriptor.toCompute.reset(new real_number[NbParticlesToReceive*size_particle_positions]);
+                            descriptor.indexes.reset(new partsize_t[NbParticlesToReceive]);
                             whatNext.emplace_back(std::pair<Action,int>{COMPUTE_PARTICLES, releasedAction.second});
                             mpiRequests.emplace_back();
                             assert(NbParticlesToReceive*size_particle_positions < std::numeric_limits<int>::max());
@@ -615,6 +616,7 @@ public:
                             const partsize_t NbParticlesToReceive = descriptor.nbParticlesToExchange;
 
                             assert(descriptor.toCompute != nullptr);
+                            assert(descriptor.indexes != nullptr);
                             descriptor.results.reset(new real_number[NbParticlesToReceive*size_particle_rhs]);
                             computer_thread.template init_result_array<size_particle_rhs>(descriptor.results.get(), NbParticlesToReceive);
 
@@ -685,6 +687,7 @@ public:
                                                 particles_utils::GetMpiType(real_number()), destProc, TAG_RESULT_PARTICLES,
                                                 current_com, &mpiRequests.back()));
                             delete[] descriptor.toCompute.release();
+                            delete[] descriptor.indexes.release();
                         }
                     }
                     //////////////////////////////////////////////////////////////////////