[Python-checkins] bpo-36763: Fix Py_SetStandardStreamEncoding() (GH-13028)
Victor Stinner
webhook-mailer at python.org
Tue Apr 30 19:36:18 EDT 2019
https://github.com/python/cpython/commit/463b82a3efe8a6a9f3924a5b37482e961dffe3b8
commit: 463b82a3efe8a6a9f3924a5b37482e961dffe3b8
branch: master
author: Victor Stinner <vstinner at redhat.com>
committer: GitHub <noreply at github.com>
date: 2019-05-01T01:36:13+02:00
summary:
bpo-36763: Fix Py_SetStandardStreamEncoding() (GH-13028)
Fix memory leak in Py_SetStandardStreamEncoding(): release memory
if the function is called twice.
files:
A Misc/NEWS.d/next/C API/2019-05-01-00-42-08.bpo-36763.vghb86.rst
M Python/coreconfig.c
diff --git a/Misc/NEWS.d/next/C API/2019-05-01-00-42-08.bpo-36763.vghb86.rst b/Misc/NEWS.d/next/C API/2019-05-01-00-42-08.bpo-36763.vghb86.rst
new file mode 100644
index 000000000000..1c34920827fc
--- /dev/null
+++ b/Misc/NEWS.d/next/C API/2019-05-01-00-42-08.bpo-36763.vghb86.rst
@@ -0,0 +1,2 @@
+Fix memory leak in :c:func:`Py_SetStandardStreamEncoding`: release memory if
+the function is called twice.
diff --git a/Python/coreconfig.c b/Python/coreconfig.c
index d05beef2aa55..471d5126f803 100644
--- a/Python/coreconfig.c
+++ b/Python/coreconfig.c
@@ -375,6 +375,7 @@ Py_SetStandardStreamEncoding(const char *encoding, const char *errors)
* Py_Initialize hasn't been called yet.
*/
if (encoding) {
+ PyMem_RawFree(_Py_StandardStreamEncoding);
_Py_StandardStreamEncoding = _PyMem_RawStrdup(encoding);
if (!_Py_StandardStreamEncoding) {
res = -2;
@@ -382,11 +383,11 @@ Py_SetStandardStreamEncoding(const char *encoding, const char *errors)
}
}
if (errors) {
+ PyMem_RawFree(_Py_StandardStreamErrors);
_Py_StandardStreamErrors = _PyMem_RawStrdup(errors);
if (!_Py_StandardStreamErrors) {
- if (_Py_StandardStreamEncoding) {
- PyMem_RawFree(_Py_StandardStreamEncoding);
- }
+ PyMem_RawFree(_Py_StandardStreamEncoding);
+ _Py_StandardStreamEncoding = NULL;
res = -3;
goto done;
}
More information about the Python-checkins
mailing list