Skip to content

Commit 463b82a

Browse files
authored
bpo-36763: Fix Py_SetStandardStreamEncoding() (GH-13028)
Fix memory leak in Py_SetStandardStreamEncoding(): release memory if the function is called twice.
1 parent 0df635c commit 463b82a

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fix memory leak in :c:func:`Py_SetStandardStreamEncoding`: release memory if
2+
the function is called twice.

Python/coreconfig.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -375,18 +375,19 @@ Py_SetStandardStreamEncoding(const char *encoding, const char *errors)
375375
* Py_Initialize hasn't been called yet.
376376
*/
377377
if (encoding) {
378+
PyMem_RawFree(_Py_StandardStreamEncoding);
378379
_Py_StandardStreamEncoding = _PyMem_RawStrdup(encoding);
379380
if (!_Py_StandardStreamEncoding) {
380381
res = -2;
381382
goto done;
382383
}
383384
}
384385
if (errors) {
386+
PyMem_RawFree(_Py_StandardStreamErrors);
385387
_Py_StandardStreamErrors = _PyMem_RawStrdup(errors);
386388
if (!_Py_StandardStreamErrors) {
387-
if (_Py_StandardStreamEncoding) {
388-
PyMem_RawFree(_Py_StandardStreamEncoding);
389-
}
389+
PyMem_RawFree(_Py_StandardStreamEncoding);
390+
_Py_StandardStreamEncoding = NULL;
390391
res = -3;
391392
goto done;
392393
}

0 commit comments

Comments
 (0)