diff --git a/src/observations.cpp b/src/observations.cpp index b6cb50cd2ecf6560eacb662ee0e9489f0c259032..3b2e5fe28b683427e90d16a67111f0ef9a31197f 100644 --- a/src/observations.cpp +++ b/src/observations.cpp @@ -26,11 +26,26 @@ void Observations::addObservation(const obsd_t & obs) assert(sat_2_idx_.size() == idx_2_sat_.size()); assert(sat_2_idx_.size() == obs_.size()); - - assert(!hasSatellite(obs.sat) && "adding an observation of a satellite already stored!"); - this->obs_.push_back(obs); - idx_2_sat_.push_back(obs.sat); - sat_2_idx_[obs.sat] = obs_.size()-1; + // copy obsd_t object + obsd_t copy_obs; + std::copy(obs.D, obs.D + 3, copy_obs.D); + std::copy(obs.L, obs.L + 3, copy_obs.L); + std::copy(obs.LLI, obs.LLI + 3, copy_obs.LLI); + std::copy(obs.P, obs.P + 3, copy_obs.P); + std::copy(obs.SNR, obs.SNR + 3, copy_obs.SNR); + std::copy(obs.code, obs.code + 3, copy_obs.code); + std::copy(obs.qualL, obs.qualL + 3, copy_obs.qualL); + copy_obs.eventime = obs.eventime; + copy_obs.freq = obs.freq; + copy_obs.rcv = obs.rcv; + copy_obs.sat = obs.sat; + copy_obs.time = obs.time; + copy_obs.timevalid = obs.timevalid; + + assert(!hasSatellite(copy_obs.sat) && "adding an observation of a satellite already stored!"); + this->obs_.push_back(copy_obs); + idx_2_sat_.push_back(copy_obs.sat); + sat_2_idx_[copy_obs.sat] = obs_.size()-1; //std::cout << "added observation of sat " << (int)obs.sat << " stored in idx " << sat_2_idx_[obs.sat] << std::endl;