]> rtime.felk.cvut.cz Git - hercules2020/kcf.git/commitdiff
Do not destroy fftw plans if they were not created
authorMichal Sojka <michal.sojka@cvut.cz>
Mon, 1 Oct 2018 23:01:55 +0000 (01:01 +0200)
committerMichal Sojka <michal.sojka@cvut.cz>
Mon, 1 Oct 2018 23:02:23 +0000 (01:02 +0200)
Otherwise we get a segfault.

src/fft_fftw.cpp
src/fft_fftw.h

index aa1ba9756b3e9debd23404ab5eee7e62e1951051..1d26269baaaa3a59dcfdb66e863bd9ef49dda9db 100644 (file)
@@ -134,13 +134,13 @@ void Fftw::inverse(ComplexMat &complex_input, MatScales &real_result)
 
 Fftw::~Fftw()
 {
-    fftwf_destroy_plan(plan_f);
-    fftwf_destroy_plan(plan_fw);
-    fftwf_destroy_plan(plan_i_1ch);
+    if (plan_f) fftwf_destroy_plan(plan_f);
+    if (plan_fw) fftwf_destroy_plan(plan_fw);
+    if (plan_i_1ch) fftwf_destroy_plan(plan_i_1ch);
 
 #ifdef BIG_BATCH
-    fftwf_destroy_plan(plan_f_all_scales);
-    fftwf_destroy_plan(plan_fw_all_scales);
-    fftwf_destroy_plan(plan_i_all_scales);
+    if (plan_f_all_scales) fftwf_destroy_plan(plan_f_all_scales);
+    if (plan_fw_all_scales) fftwf_destroy_plan(plan_fw_all_scales);
+    if (plan_i_all_scales) fftwf_destroy_plan(plan_i_all_scales);
 #endif
 }
index 47bc7ad700838f92dbf36283787f19b157727d04..7274f514c80a0c3e725ce9ca1b12e3a6a8eccf88 100644 (file)
@@ -26,9 +26,9 @@ protected:
 
 private:
     cv::Mat m_window;
-    fftwf_plan plan_f, plan_fw, plan_i_1ch;
+    fftwf_plan plan_f = 0, plan_fw = 0, plan_i_1ch = 0;
 #ifdef BIG_BATCH
-    fftwf_plan plan_f_all_scales, plan_fw_all_scales, plan_i_all_scales;
+    fftwf_plan plan_f_all_scales = 0, plan_fw_all_scales = 0, plan_i_all_scales = 0;
 #endif
 };