summaryrefslogtreecommitdiffstats
path: root/Modules/main.c
diff options
context:
space:
mode:
authorRonald Oussoren <ronaldoussoren@mac.com>2009-02-12 15:55:38 (GMT)
committerRonald Oussoren <ronaldoussoren@mac.com>2009-02-12 15:55:38 (GMT)
commit3e264e13ede4c3c067dd30052aa0f1e7298342d2 (patch)
tree4b47a8cb5e4227ab41fc91d2a1f89d373ca1bc88 /Modules/main.c
parent50987bce063bd8ae183a327b0de4c402e4a1a774 (diff)
downloadcpython-3e264e13ede4c3c067dd30052aa0f1e7298342d2.zip
cpython-3e264e13ede4c3c067dd30052aa0f1e7298342d2.tar.gz
cpython-3e264e13ede4c3c067dd30052aa0f1e7298342d2.tar.bz2
This fixes issue5143 and includes a test.
Issue5143 notes that getpath.c and main.c pass a 'char*' where a 'wchar_t*' is expected on OSX.
Diffstat (limited to 'Modules/main.c')
-rw-r--r--Modules/main.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/Modules/main.c b/Modules/main.c
index 6de1523..8352e66 100644
--- a/Modules/main.c
+++ b/Modules/main.c
@@ -487,10 +487,23 @@ Py_Main(int argc, wchar_t **argv)
so the actual executable path is passed in an environment variable.
See Lib/plat-mac/bundlebuiler.py for details about the bootstrap
script. */
- if ((p = Py_GETENV("PYTHONEXECUTABLE")) && *p != '\0')
- Py_SetProgramName(p);
- else
+ if ((p = Py_GETENV("PYTHONEXECUTABLE")) && *p != '\0') {
+ wchar_t* buffer;
+ size_t len = strlen(p);
+ size_t r;
+
+ buffer = malloc(len * sizeof(wchar_t));
+ if (buffer == NULL) {
+ Py_FatalError(
+ "not enough memory to copy PYTHONEXECUTABLE");
+ }
+
+ r = mbstowcs(buffer, p, len);
+ Py_SetProgramName(buffer);
+ /* buffer is now handed off - do not free */
+ } else {
Py_SetProgramName(argv[0]);
+ }
#else
Py_SetProgramName(argv[0]);
#endif