gnucash stable: Bug 799138 - Port to new Python C config API

John Ralls jralls at code.gnucash.org
Fri Nov 24 17:53:52 EST 2023


Updated	 via  https://github.com/Gnucash/gnucash/commit/1d8c525a (commit)
	from  https://github.com/Gnucash/gnucash/commit/ed492127 (commit)



commit 1d8c525afc31ba3b02fcd86fb8dc1f484ead6c05
Author: John Ralls <jralls at ceridwen.us>
Date:   Fri Nov 24 14:52:07 2023 -0800

    Bug 799138 - Port to new Python C config API

diff --git a/gnucash/python/gncmod-python.c b/gnucash/python/gncmod-python.c
index d2bd8a5183..aa11b6884d 100644
--- a/gnucash/python/gncmod-python.c
+++ b/gnucash/python/gncmod-python.c
@@ -65,15 +65,29 @@ libgncmod_python_gnc_module_description(void)
 int
 libgncmod_python_gnc_module_init(int refcount)
 {
-    Py_Initialize();
-
+#ifdef __WIN32
     wchar_t* argv = NULL;
-    PySys_SetArgv(0, &argv);
-
+#else
+    char* argv = NULL;
+#endif
+    PyStatus status;
+    PyConfig config;
+    PyConfig_InitPythonConfig(&config);
+    status = PyConfig_SetBytesArgv(&config, 0, &argv);
+    if (PyStatus_Exception(status))
+    {
+        PyConfig_Clear(&config);
+        return FALSE;
+    }
+    Py_Initialize();
     gchar *pkgdatadir = gnc_path_get_pkgdatadir();
     gchar *init_filename = g_build_filename(pkgdatadir, "python/init.py", (char*)NULL);
     g_debug("Looking for python init script at %s", init_filename);
+#ifdef __WIN32
+    FILE *fp = fopen(init_filename, "rb");
+#else
     FILE *fp = fopen(init_filename, "r");
+#endif
     if (fp)
     {
         PyRun_SimpleFile(fp, init_filename);
@@ -87,6 +101,7 @@ libgncmod_python_gnc_module_init(int refcount)
     }
     g_free(init_filename);
     g_free(pkgdatadir);
+    PyConfig_Clear(&config);
 
     return TRUE;
 }



Summary of changes:
 gnucash/python/gncmod-python.c | 23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)



More information about the gnucash-changes mailing list