From 04c1d77112db3f8441f66ef7177d929485e6ac25 Mon Sep 17 00:00:00 2001 From: Martin Reinecke Date: Tue, 8 Oct 2019 13:41:23 +0200 Subject: [PATCH] more sanity checks --- gridder_cxx.h | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/gridder_cxx.h b/gridder_cxx.h index a8ff6d8..3ff39a2 100644 --- a/gridder_cxx.h +++ b/gridder_cxx.h @@ -472,7 +472,7 @@ class Baselines shift=0; while((idx_t(1)< void wminmax(const GridderConfig &gconf, template void update_idx(vector &v, vector &vold, const vector &add, const vector &del) { + myassert(v.size()>=del.size(), "must not happen"); vold.resize(0); vold.reserve((v.size()+add.size())-del.size()); auto iin=v.begin(), ein=v.end(); @@ -1301,19 +1302,17 @@ template void update_idx(vector &v, vector &vold, while(iin!=ein) { - if (irem!=erem) - { - while ((iin!=ein) && (irem!=erem) && (*iin==*irem)) - { ++irem; ++iin; } // skip the entries to be removed - if (iin==ein) break; - } - if (iadd!=eadd) - while ((iadd!=eadd) && (*iadd<*iin)) - vold.push_back(*(iadd++)); - vold.push_back(*(iin++)); + if ((irem!=erem) && (*iin==*irem)) + { ++irem; ++iin; } // skip removed entry + else if ((iadd!=eadd) && (*iadd<*iin)) + vold.push_back(*(iadd++)); // add new entry + else + vold.push_back(*(iin++)); } + myassert(irem==erem, "must not happen"); while(iadd!=eadd) vold.push_back(*(iadd++)); + myassert(vold.size()==(v.size()+add.size())-del.size(), "must not happen"); v.swap(vold); } -- GitLab