gnucash maint: gtk_file_chooser_get_filename|uri returns a char* which must be freed

Christopher Lam clam at code.gnucash.org
Thu Sep 29 21:06:23 EDT 2022


Updated	 via  https://github.com/Gnucash/gnucash/commit/bb830cec (commit)
	from  https://github.com/Gnucash/gnucash/commit/a27adb78 (commit)



commit bb830cec3a37db601ade6cfb52dfc3e71c755054
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Fri Sep 30 07:36:55 2022 +0800

    gtk_file_chooser_get_filename|uri returns a char* which must be freed

diff --git a/gnucash/gnome-utils/dialog-options.c b/gnucash/gnome-utils/dialog-options.c
index c4f081826..af41f0684 100644
--- a/gnucash/gnome-utils/dialog-options.c
+++ b/gnucash/gnome-utils/dialog-options.c
@@ -3478,6 +3478,7 @@ gnc_option_set_ui_value_pixmap (GNCOption *option, gboolean use_default,
                                     g_strdup (string), g_free);
             DEBUG("Set %s, retrieved %s", string, test ? test : "(null)");
             gnc_image_option_update_preview_cb (GTK_FILE_CHOOSER(widget), option);
+            g_free (test);
         }
         LEAVE("FALSE");
         g_free ((gpointer *) string);
diff --git a/gnucash/gnome-utils/gnc-file.c b/gnucash/gnome-utils/gnc-file.c
index 677125c1e..8d0d9af55 100644
--- a/gnucash/gnome-utils/gnc-file.c
+++ b/gnucash/gnome-utils/gnc-file.c
@@ -71,7 +71,6 @@ gnc_file_dialog_int (GtkWindow *parent,
                      )
 {
     GtkWidget *file_box;
-    const char *internal_name;
     char *file_name = NULL;
     gchar * okbutton = NULL;
     const gchar *ok_icon = NULL;
@@ -171,17 +170,17 @@ gnc_file_dialog_int (GtkWindow *parent,
         else
         {
             /* look for constructs like postgres://foo */
-            internal_name = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER (file_box));
-            if (internal_name != NULL)
+            file_name = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER (file_box));
+            if (file_name != NULL)
             {
-                if (strstr (internal_name, "file://") == internal_name)
+                if (strstr (file_name, "file://") == file_name)
                 {
+                    g_free (file_name);
                     /* nope, a local file name */
-                    internal_name = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER (file_box));
+                    file_name = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER (file_box));
                 }
-                file_name = g_strdup(internal_name);
+                file_name_list = g_slist_append (file_name_list, file_name);
             }
-            file_name_list = g_slist_append (file_name_list, file_name);
         }
     }
     gtk_widget_destroy(GTK_WIDGET(file_box));
diff --git a/gnucash/gnome/dialog-doclink.c b/gnucash/gnome/dialog-doclink.c
index 3e83a7421..3250e6c2f 100644
--- a/gnucash/gnome/dialog-doclink.c
+++ b/gnucash/gnome/dialog-doclink.c
@@ -190,10 +190,10 @@ fcb_clicked_cb (GtkButton *button, GtkWidget *ok_button)
             DEBUG("Native file uri is '%s'", uri);
 
             g_object_set_data_full (G_OBJECT(button), "uri", g_strdup (uri), g_free);
-            g_free (uri);
             g_free (filename);
             g_free (unescape_filename);
         }
+        g_free (uri);
         file_ok_cb (button, ok_button);
     }
     g_object_unref (native);
diff --git a/gnucash/import-export/csv-imp/assistant-csv-price-import.cpp b/gnucash/import-export/csv-imp/assistant-csv-price-import.cpp
index 15c24dd1c..ea90fbd0f 100644
--- a/gnucash/import-export/csv-imp/assistant-csv-price-import.cpp
+++ b/gnucash/import-export/csv-imp/assistant-csv-price-import.cpp
@@ -739,7 +739,10 @@ CsvImpPriceAssist::check_for_valid_filename ()
 {
     auto file_name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(file_chooser));
     if (!file_name || g_file_test (file_name, G_FILE_TEST_IS_DIR))
+    {
+        g_free (file_name);
         return false;
+    }
 
     auto filepath = gnc_uri_get_path (file_name);
     auto starting_dir = g_path_get_dirname (filepath);
diff --git a/gnucash/import-export/csv-imp/assistant-csv-trans-import.cpp b/gnucash/import-export/csv-imp/assistant-csv-trans-import.cpp
index 07d1cb1d0..8c499d93a 100644
--- a/gnucash/import-export/csv-imp/assistant-csv-trans-import.cpp
+++ b/gnucash/import-export/csv-imp/assistant-csv-trans-import.cpp
@@ -702,7 +702,10 @@ CsvImpTransAssist::check_for_valid_filename ()
 {
     auto file_name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(file_chooser));
     if (!file_name || g_file_test (file_name, G_FILE_TEST_IS_DIR))
+    {
+        g_free (file_name);
         return false;
+    }
 
     auto filepath = gnc_uri_get_path (file_name);
     auto starting_dir = g_path_get_dirname (filepath);



Summary of changes:
 gnucash/gnome-utils/dialog-options.c                        |  1 +
 gnucash/gnome-utils/gnc-file.c                              | 13 ++++++-------
 gnucash/gnome/dialog-doclink.c                              |  2 +-
 .../import-export/csv-imp/assistant-csv-price-import.cpp    |  3 +++
 .../import-export/csv-imp/assistant-csv-trans-import.cpp    |  3 +++
 5 files changed, 14 insertions(+), 8 deletions(-)



More information about the gnucash-changes mailing list