Fixed memory bugs in generateMock

This commit is contained in:
Guilhem Lavaux 2012-11-22 12:16:35 -06:00
parent 26f6864f47
commit a4cb64e6c4

View file

@ -461,6 +461,7 @@ void createBox(SimuData *simu, long num_targets, std::vector<long> snapshot_spli
{ {
double *ranges = new double[6]; double *ranges = new double[6];
double *mul = new double[3]; double *mul = new double[3];
long *simu_uniqueID = simu->as<long>("uniqueID");
ranges[0] = args_info.rangeX_min_arg; ranges[0] = args_info.rangeX_min_arg;
ranges[1] = args_info.rangeX_max_arg; ranges[1] = args_info.rangeX_max_arg;
@ -488,7 +489,6 @@ void createBox(SimuData *simu, long num_targets, std::vector<long> snapshot_spli
cout << "Rescaling factors = " << mul[0] << " " << mul[1] << " " << mul[2] << endl; cout << "Rescaling factors = " << mul[0] << " " << mul[1] << " " << mul[2] << endl;
long *uniqueID = new long[num_targets]; long *uniqueID = new long[num_targets];
long *simu_uniqueID = simu->as<long>("uniqueID");
long *particle_id = new long[num_targets]; long *particle_id = new long[num_targets];
double *expansion_fac = new double[num_targets]; double *expansion_fac = new double[num_targets];
long *snap_split = new long[snapshot_split.size()]; long *snap_split = new long[snapshot_split.size()];
@ -522,6 +522,7 @@ void buildBox(SimuData *simu, const std::vector<long>& targets, long& loaded,
{ {
long pid = targets[i]; long pid = targets[i];
assert(loaded < targets.size());
for (int j = 0; j < 3; j++) for (int j = 0; j < 3; j++)
{ {
boxed->Pos[j][loaded] = (simu->Pos[j][pid]-ranges[j*2])*mul[j]; boxed->Pos[j][loaded] = (simu->Pos[j][pid]-ranges[j*2])*mul[j];
@ -529,8 +530,8 @@ void buildBox(SimuData *simu, const std::vector<long>& targets, long& loaded,
assert(boxed->Pos[j][loaded] < 1); assert(boxed->Pos[j][loaded] < 1);
} }
particle_id[loaded] = pid; particle_id[loaded] = pid;
uniqueID[loaded] = (simu_uniqueID != 0) ? simu_uniqueID[i] : 0; uniqueID[loaded] = (simu_uniqueID != 0) ? simu_uniqueID[pid] : 0;
expansion_fac[loaded] = efac[i]; expansion_fac[loaded] = efac[pid];
loaded++; loaded++;
k++; k++;
} }
@ -568,9 +569,6 @@ void saveBox(SimuData *&boxed, generateMock_info& args_info)
NcVar *v4 = f.add_var("unique_ids", ncLong, NumPart_dim); NcVar *v4 = f.add_var("unique_ids", ncLong, NumPart_dim);
v4->put(uniqueID, boxed->NumPart); v4->put(uniqueID, boxed->NumPart);
} }
delete[] particle_id;
delete[] expansion_fac;
} }
void makeBoxFromParameter(SimuData *simu, SimuData* &boxed, generateMock_info& args_info) void makeBoxFromParameter(SimuData *simu, SimuData* &boxed, generateMock_info& args_info)