[Python-checkins] cpython (merge 3.2 -> 3.3): Issue #1602133: 'environ' is not really available with shared libraries on OSX

ronald.oussoren python-checkins at python.org
Fri Jan 25 18:03:25 CET 2013


http://hg.python.org/cpython/rev/106d1d79c853
changeset: 81731:106d1d79c853
branch: 3.3
parent: 81727:5464a534e7bd
parent: 81730:ea9fd9c9c677
user: Ronald Oussoren <ronaldoussoren at mac.com>
date: Fri Jan 25 18:01:05 2013 +0100
summary:
 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
files:
 Misc/NEWS | 3 +++
 Modules/posixmodule.c | 7 ++++---
 2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -150,6 +150,9 @@
 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
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -955,9 +955,10 @@
 #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 @@
 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
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /