diff options
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Modules/posixmodule.c | 7 |
2 files changed, 7 insertions, 3 deletions
@@ -197,6 +197,9 @@ Core and Builtins - Issue #13521: dict.setdefault() now does only one lookup for the given key, making it "atomic" for many purposes. Patch by Filip GruszczyĆski. +- Issue #1602133: on Mac OS X a shared library build (``--enable-shared``) + now fills the ``os.environ`` variable correctly. + - Issue #14471: Fix a possible buffer overrun in the winreg module. Library diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index e7e5305..4179c0e 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -501,9 +501,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; @@ -528,7 +529,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 |