diff options
| author | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2023-01-31 13:13:48 +0100 |
|---|---|---|
| committer | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2023-01-31 13:13:48 +0100 |
| commit | 9bf2726bce637d151bae133c072ac83e5f2ab514 (patch) | |
| tree | f8a44f969234c9cfe01d5769437724b9332db3aa | |
| parent | 1045538ed0b1b966f03d4808ff4c907c29e543a3 (diff) | |
Fix "Native Filechooser (Zenity) crashes on second invocation" (#665)
| -rw-r--r-- | src/Fl_Native_File_Chooser_Kdialog.cxx | 1 | ||||
| -rw-r--r-- | src/Fl_Native_File_Chooser_Zenity.cxx | 4 |
2 files changed, 3 insertions, 2 deletions
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); |
