From: Victor Stinner Date: Wed, 22 Jan 2020 20:53:26 +0000 (+0100) Subject: bpo-39406: os.putenv() avoids putenv_dict on Windows (GH-18126) X-Git-Tag: v3.9.0a3~25 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0852c7dd52ac42e7843ddfef44571494e4c86070;p=thirdparty%2FPython%2Fcpython.git bpo-39406: os.putenv() avoids putenv_dict on Windows (GH-18126) Windows: _wputenv(env) copies the *env* string and doesn't require the caller to manage the variable memory. --- diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index e0eecfa6d114..71b99fd836f1 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -819,7 +819,9 @@ dir_fd_converter(PyObject *o, void *p) } } -#ifdef HAVE_PUTENV +/* Windows: _wputenv(env) copies the *env* string and doesn't require the + caller to manage the variable memory. */ +#if defined(HAVE_PUTENV) && !defined(MS_WINDOWS) # define PY_PUTENV_DICT #endif @@ -10130,8 +10132,10 @@ os_putenv_impl(PyObject *module, PyObject *name, PyObject *value) posix_error(); goto error; } + /* _wputenv(env) copies the *env* string and doesn't require the caller + to manage the variable memory. */ + Py_DECREF(unicode); - posix_putenv_dict_setitem(name, unicode); Py_RETURN_NONE; error: