From ec04cb8cff6eefdcd092da769a1854df205e702a Mon Sep 17 00:00:00 2001 From: ZbychuButItWasTaken Date: Thu, 19 Sep 2024 17:11:36 +0200 Subject: [PATCH] fix segfault --- .../instruments/avhrr/avhrr_reader.cpp | 60 ++++++++++++------- .../instruments/avhrr/avhrr_reader.h | 4 +- 2 files changed, 39 insertions(+), 25 deletions(-) diff --git a/plugins/noaa_metop_support/instruments/avhrr/avhrr_reader.cpp b/plugins/noaa_metop_support/instruments/avhrr/avhrr_reader.cpp index 8aa9583b2..5b8dc87b1 100644 --- a/plugins/noaa_metop_support/instruments/avhrr/avhrr_reader.cpp +++ b/plugins/noaa_metop_support/instruments/avhrr/avhrr_reader.cpp @@ -75,32 +75,38 @@ namespace noaa_metop } } for (int j = 0; j < 3; j++) + { + avg_blb[j] /= blb_list[j].size(); + for (int k = 0; k < blb_list[j].size(); k++) { - avg_blb[j] /= blb_list[j].size(); - for (int k = 0; k < blb_list[j].size(); k++) + if (abs(blb_list[j][k] - avg_blb[j]) > BLB_LIMIT) { - if (abs(blb_list[j][k] - avg_blb[j]) > BLB_LIMIT) - { - blb_list[j].erase(blb_list[j].begin() + k); - k--; - } + blb_list[j].erase(blb_list[j].begin() + k); + k--; } + } + if (blb_list[j].size() != 0) + { avg_blb[j] = 0; for (int k = 0; k < blb_list[j].size(); k++) { avg_blb[j] += blb_list[j][k]; } - avg_blb[j] /= blb_list[j].size(); - avg_spc[j] /= spc_list[j].size(); - for (int k = 0; k < spc_list[j].size(); k++) + avg_blb[j] /= blb_list[j].size(); + } + + avg_spc[j] /= spc_list[j].size(); + for (int k = 0; k < spc_list[j].size(); k++) + { + if (abs(spc_list[j][k] - avg_spc[j]) > SPC_LIMIT) { - if (abs(spc_list[j][k] - avg_spc[j]) > SPC_LIMIT) - { - spc_list[j].erase(spc_list[j].begin() + k); - k--; - } + spc_list[j].erase(spc_list[j].begin() + k); + k--; } + } + if (spc_list[j].size() != 0) + { avg_spc[j] = 0; for (int k = 0; k < spc_list[j].size(); k++) { @@ -108,6 +114,7 @@ namespace noaa_metop } avg_spc[j] /= spc_list[j].size(); } + } std::array el; for (int i = 0; i < 3; i++) @@ -180,12 +187,16 @@ namespace noaa_metop k--; } } - avg_blb[j] = 0; - for (int k = 0; k < blb_list[j].size(); k++) + if (blb_list[j].size() != 0) { - avg_blb[j] += blb_list[j][k]; + avg_blb[j] = 0; + for (int k = 0; k < blb_list[j].size(); k++) + { + avg_blb[j] += blb_list[j][k]; + } + + avg_blb[j] /= blb_list[j].size(); } - avg_blb[j] /= blb_list[j].size(); avg_spc[j] /= spc_list[j].size(); for (int k = 0; k < spc_list[j].size(); k++) @@ -196,12 +207,15 @@ namespace noaa_metop k--; } } - avg_spc[j] = 0; - for (int k = 0; k < spc_list[j].size(); k++) + if (spc_list[j].size() != 0) { - avg_spc[j] += spc_list[j][k]; + avg_spc[j] = 0; + for (int k = 0; k < spc_list[j].size(); k++) + { + avg_spc[j] += spc_list[j][k]; + } + avg_spc[j] /= spc_list[j].size(); } - avg_spc[j] /= spc_list[j].size(); } std::array el; diff --git a/plugins/noaa_metop_support/instruments/avhrr/avhrr_reader.h b/plugins/noaa_metop_support/instruments/avhrr/avhrr_reader.h index c7e43c2b1..6e26e6576 100644 --- a/plugins/noaa_metop_support/instruments/avhrr/avhrr_reader.h +++ b/plugins/noaa_metop_support/instruments/avhrr/avhrr_reader.h @@ -7,8 +7,8 @@ #include "resources.h" #include "common/calibration.h" -#define BLB_LIMIT 100 -#define SPC_LIMIT 100 +#define BLB_LIMIT 150 +#define SPC_LIMIT 150 namespace noaa_metop {