From 9bf2726bce637d151bae133c072ac83e5f2ab514 Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Tue, 31 Jan 2023 13:13:48 +0100 Subject: Fix "Native Filechooser (Zenity) crashes on second invocation" (#665) --- src/Fl_Native_File_Chooser_Kdialog.cxx | 1 - src/Fl_Native_File_Chooser_Zenity.cxx | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/Fl_Native_File_Chooser_Kdialog.cxx b/src/Fl_Native_File_Chooser_Kdialog.cxx index b2c100879..db17d15ed 100644 --- a/src/Fl_Native_File_Chooser_Kdialog.cxx +++ b/src/Fl_Native_File_Chooser_Kdialog.cxx @@ -170,7 +170,6 @@ int Fl_Kdialog_Native_File_Chooser_Driver::show() { } } delete[] command; - if (_title) { free(_title); _title = NULL; } if (!pipe) return -1; return (data.all_files == NULL ? 1 : 0); } diff --git a/src/Fl_Native_File_Chooser_Zenity.cxx b/src/Fl_Native_File_Chooser_Zenity.cxx index ae972de1d..0f7930121 100644 --- a/src/Fl_Native_File_Chooser_Zenity.cxx +++ b/src/Fl_Native_File_Chooser_Zenity.cxx @@ -77,7 +77,8 @@ char *Fl_Zenity_Native_File_Chooser_Driver::build_command() { snprintf(command+l, lcommand-l, " %s %s ", option, preset ? preset : ""); delete[] preset; if (_parsedfilt) { - char *p = strtok(_parsedfilt, "\n"); + char *parsed_filter_copy = strdup(_parsedfilt); // keep _parsedfilt unchanged for re-use + char *p = strtok(parsed_filter_copy, "\n"); while (p) { char *op = strchr(p, '('); l = strlen(command); @@ -105,6 +106,7 @@ char *Fl_Zenity_Native_File_Chooser_Driver::build_command() { } p = strtok(NULL, "\n"); } + free(parsed_filter_copy); } strcat(command, " 2> /dev/null"); // get rid of stderr output //puts(command); -- cgit v1.2.3