@@ -322,20 +322,18 @@ unsafe_convert(::Type{PlanPtr}, p::FFTWPlan) = p.plan
322322
323323struct FFTWPlanDestructor
324324 ptr:: PlanPtr
325- use_32bit_lib :: Bool
325+ fptr :: Ptr{Cvoid}
326326end
327327
328- FFTWPlanDestructor (plan:: FFTWPlan{<:fftwSingle} ) = FFTWPlanDestructor (plan. plan, true )
329- FFTWPlanDestructor (plan:: FFTWPlan{<:fftwDouble} ) = FFTWPlanDestructor (plan. plan, false )
328+ FFTWPlanDestructor (plan:: FFTWPlan{<:fftwSingle} ) =
329+ FFTWPlanDestructor (plan. plan, dlsym (dlopen (libfftw3f), :fftwf_destroy_plan ))
330+ FFTWPlanDestructor (plan:: FFTWPlan{<:fftwDouble} ) =
331+ FFTWPlanDestructor (plan. plan, dlsym (dlopen (libfftw3), :fftw_destroy_plan ))
330332
331333# these functions should only be called while the fftwlock is held
332334unsafe_destroy_plan (plan:: FFTWPlan ) = unsafe_destroy_plan (FFTWPlanDestructor (plan))
333335function unsafe_destroy_plan (destructor:: FFTWPlanDestructor )
334- if destructor. use_32bit_lib
335- ccall ((:fftwf_destroy_plan ,libfftw3f), Cvoid, (PlanPtr,), destructor. ptr)
336- else
337- ccall ((:fftw_destroy_plan ,libfftw3), Cvoid, (PlanPtr,), destructor. ptr)
338- end
336+ ccall (destructor. fptr, Cvoid, (PlanPtr, ), destructor. ptr)
339337end
340338
341339const deferred_destroy_lock = ReentrantLock () # lock protecting the deferred_destroy_plans list
0 commit comments