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