summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Fl_Native_File_Chooser_Kdialog.cxx1
-rw-r--r--src/Fl_Native_File_Chooser_Zenity.cxx4
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);