summaryrefslogtreecommitdiffstats
path: root/Modules/getpath.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/getpath.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/getpath.c')
-rw-r--r--Modules/getpath.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/Modules/getpath.c b/Modules/getpath.c
index 064877c..b7f178e 100644
--- a/Modules/getpath.c
+++ b/Modules/getpath.c
@@ -457,6 +457,7 @@ calculate_path(void)
#else
unsigned long nsexeclength = MAXPATHLEN;
#endif
+ char execpath[MAXPATHLEN+1];
#endif
if (_path) {
@@ -486,8 +487,13 @@ calculate_path(void)
* will fail if a relative path was used. but in that case,
* absolutize() should help us out below
*/
- else if(0 == _NSGetExecutablePath(progpath, &nsexeclength) && progpath[0] == SEP)
- ;
+ else if(0 == _NSGetExecutablePath(execpath, &nsexeclength) && execpath[0] == SEP) {
+ size_t r = mbstowcs(progpath, execpath, MAXPATHLEN+1);
+ if (r == (size_t)-1 || r > MAXPATHLEN) {
+ /* Could not convert execpath, or it's too long. */
+ progpath[0] = '\0';
+ }
+ }
#endif /* __APPLE__ */
else if (path) {
while (1) {