Hi all, I found a bug in gnuradio-core/src/lib/general/gri_fft.cc, in function: static const char * wisdom_filename ()
It returns pointer to char string from temporary object created by call to path.string(). Obviously, this pointer is pointing to garbage after exit from wisdom_filename() function. I propose something like this: gnuradio-core/src/lib/general/gri_fft.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/gnuradio-core/src/lib/general/gri_fft.cc b/gnuradio-core/src/lib/general/gri_fft.cc index 68e7e69..906279b 100644 --- a/gnuradio-core/src/lib/general/gri_fft.cc +++ b/gnuradio-core/src/lib/general/gri_fft.cc @@ -73,18 +73,19 @@ gri_fft_planner::mutex() return s_planning_mutex; } -static const char * +static std::string wisdom_filename () { static fs::path path; path = fs::path(gr_appdata_path()) / ".gr_fftw_wisdom"; - return path.string().c_str(); + return path.string(); } static void gri_fftw_import_wisdom () { - const char *filename = wisdom_filename (); + const std::string & s = wisdom_filename (); + const char *filename = s.c_str (); FILE *fp = fopen (filename, "r"); if (fp != 0){ int r = fftwf_import_wisdom_from_file (fp); @@ -114,7 +115,8 @@ gri_fftw_config_threading (int nthreads) static void gri_fftw_export_wisdom () { - const char *filename = wisdom_filename (); + const std::string & s = wisdom_filename (); + const char *filename = s.c_str (); FILE *fp = fopen (filename, "w"); if (fp != 0){ fftwf_export_wisdom_to_file (fp);
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio