gnucash stable: Bug 799490 - Error on start or opening a gnucash file: Can't parse the URL

John Ralls jralls at code.gnucash.org
Sat May 17 21:24:33 EDT 2025


Updated	 via  https://github.com/Gnucash/gnucash/commit/019fbb3f (commit)
	from  https://github.com/Gnucash/gnucash/commit/910130c5 (commit)



commit 019fbb3f58dc987070accb636fde4f02bc5d0600
Author: John Ralls <jralls at ceridwen.us>
Date:   Sat May 17 18:23:23 2025 -0700

    Bug 799490 - Error on start or opening a gnucash file: Can't parse the URL
    
    g_filename_from_uri can't handle # in paths but gnc_uri_get_path can.

diff --git a/gnucash/gnome-utils/dialog-file-access.c b/gnucash/gnome-utils/dialog-file-access.c
index c595e79f6a..91c0c50901 100644
--- a/gnucash/gnome-utils/dialog-file-access.c
+++ b/gnucash/gnome-utils/dialog-file-access.c
@@ -144,8 +144,7 @@ gnc_ui_file_access_response_cb(GtkDialog *dialog, gint response, GtkDialog *unus
         }
         if (g_str_has_prefix (url, "file://"))
         {
-            if ( g_file_test( g_filename_from_uri( url, NULL, NULL ),
-                              G_FILE_TEST_IS_DIR ))
+          if ( g_file_test (gnc_uri_get_path (url), G_FILE_TEST_IS_DIR))
             {
                 gtk_file_chooser_set_current_folder_uri( faw->fileChooser, url );
                 return;
diff --git a/gnucash/gnome-utils/dialog-preferences.c b/gnucash/gnome-utils/dialog-preferences.c
index f4de4a5510..1d8076704c 100644
--- a/gnucash/gnome-utils/dialog-preferences.c
+++ b/gnucash/gnome-utils/dialog-preferences.c
@@ -75,6 +75,7 @@
 #include "gnc-prefs.h"
 #include "gnc-ui.h"
 #include "gnc-ui-util.h"
+#include <gnc-uri-utils.h>
 #include <gnc-session.h>
 #include "gnc-component-manager.h"
 #include "dialog-preferences.h"
@@ -887,7 +888,7 @@ gnc_prefs_connect_file_chooser_button (GtkFileChooserButton *fcb, const gchar *b
 
     if (uri && *uri) // default entry
     {
-        gchar *path_head = g_filename_from_uri (uri, NULL, NULL);
+        gchar *path_head = gnc_uri_get_path (uri);
 
         // test for current folder present and set chooser to it
         if (g_file_test (path_head, G_FILE_TEST_IS_DIR))
diff --git a/libgnucash/engine/qofsession.cpp b/libgnucash/engine/qofsession.cpp
index 79b5569fa6..81392db879 100644
--- a/libgnucash/engine/qofsession.cpp
+++ b/libgnucash/engine/qofsession.cpp
@@ -55,6 +55,7 @@ static QofLogModule log_module = QOF_MOD_SESSION;
 #include "qof-backend.hpp"
 #include "qofsession.hpp"
 #include "gnc-backend-prov.hpp"
+#include "gnc-uri-utils.h"
 
 #include <vector>
 #include <boost/algorithm/string.hpp>
@@ -274,7 +275,7 @@ QofSessionImpl::begin (const char* new_uri, SessionOpenMode mode) noexcept
     char * scheme {g_uri_parse_scheme (new_uri)};
     char * filename {nullptr};
     if (g_strcmp0 (scheme, "file") == 0)
-        filename = g_filename_from_uri (new_uri, nullptr, nullptr);
+        filename = gnc_uri_get_path(new_uri);
     else if (!scheme)
         filename = g_strdup (new_uri);
 



Summary of changes:
 gnucash/gnome-utils/dialog-file-access.c | 3 +--
 gnucash/gnome-utils/dialog-preferences.c | 3 ++-
 libgnucash/engine/qofsession.cpp         | 3 ++-
 3 files changed, 5 insertions(+), 4 deletions(-)



More information about the gnucash-changes mailing list