diff options
author | Ronald Oussoren <ronaldoussoren@mac.com> | 2013-01-25 17:01:05 (GMT) |
---|---|---|
committer | Ronald Oussoren <ronaldoussoren@mac.com> | 2013-01-25 17:01:05 (GMT) |
commit | 1c90eed8a9a10b6b7eb5f791931cc86754d4028c (patch) | |
tree | 62fbd65c674d54d1e1e64f5ffe1ace7dc822ae4b | |
parent | 96a9f89b2d67caf622c311e567d068a24962762a (diff) | |
parent | 697e56d0f592165209cbeb87583c75dc231c6338 (diff) | |
download | cpython-1c90eed8a9a10b6b7eb5f791931cc86754d4028c.zip cpython-1c90eed8a9a10b6b7eb5f791931cc86754d4028c.tar.gz cpython-1c90eed8a9a10b6b7eb5f791931cc86754d4028c.tar.bz2 |
Issue #1602133: 'environ' is not really available with shared libraries on OSX (merge from 3.2)
There already was a workaround for this for framework builds on OSX,
this changeset enables the same workaround for shared libraries.
Closes #1602133
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Modules/posixmodule.c | 7 |
2 files changed, 7 insertions, 3 deletions
@@ -150,6 +150,9 @@ Core and Builtins Library ------- +- Issue #1602133: on Mac OS X a shared library build (``--enable-shared``) + now fills the ``os.environ`` variable correctly. + - Issue #9290: In IDLE the sys.std* streams now implement io.TextIOBase interface and support all mandatory methods and properties. diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 90838c9..40645ea 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -955,9 +955,10 @@ win32_get_reparse_tag(HANDLE reparse_point_handle, ULONG *reparse_tag) #endif /* MS_WINDOWS */ /* Return a dictionary corresponding to the POSIX environment table */ -#ifdef WITH_NEXT_FRAMEWORK +#if defined(WITH_NEXT_FRAMEWORK) || (defined(__APPLE__) && defined(Py_ENABLE_SHARED)) /* On Darwin/MacOSX a shared library or framework has no access to -** environ directly, we must obtain it with _NSGetEnviron(). +** environ directly, we must obtain it with _NSGetEnviron(). See also +** man environ(7). */ #include <crt_externs.h> static char **environ; @@ -982,7 +983,7 @@ convertenviron(void) d = PyDict_New(); if (d == NULL) return NULL; -#ifdef WITH_NEXT_FRAMEWORK +#if defined(WITH_NEXT_FRAMEWORK) || (defined(__APPLE__) && defined(Py_ENABLE_SHARED)) if (environ == NULL) environ = *_NSGetEnviron(); #endif |