diff options
author | Victor Stinner <vstinner@redhat.com> | 2019-05-01 01:36:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-01 01:36:13 +0200 |
commit | 463b82a3efe8a6a9f3924a5b37482e961dffe3b8 (patch) | |
tree | a6d89da885ec7dd2eddd1eea2ec3b8334fe08ee0 /Python/coreconfig.c | |
parent | 0df635c7f8aa69e56a092bd4f142f0f164741ab2 (diff) | |
download | cpython-463b82a3efe8a6a9f3924a5b37482e961dffe3b8.tar.gz cpython-463b82a3efe8a6a9f3924a5b37482e961dffe3b8.zip |
bpo-36763: Fix Py_SetStandardStreamEncoding() (GH-13028)
Fix memory leak in Py_SetStandardStreamEncoding(): release memory
if the function is called twice.
Diffstat (limited to 'Python/coreconfig.c')
-rw-r--r-- | Python/coreconfig.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/Python/coreconfig.c b/Python/coreconfig.c index d05beef2aa5..471d5126f80 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; } |