Issue #1602133: 'environ' is not really available with shared libraries on OSX (merge from 3.3)
There already was a workaround for this for framework builds on OSX, this changeset enables the same workaround for shared libraries. Closes #1602133
This commit is contained in:
commit
20190e2d54
|
@ -218,6 +218,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.
|
||||
|
||||
|
|
|
@ -924,9 +924,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;
|
||||
|
@ -947,7 +948,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
|
||||
|
|
Loading…
Reference in New Issue