Commit fc1b6f00 authored by Antoine Pitrou's avatar Antoine Pitrou

Fix the _io module leaking references when a sub-interpreter is created.

parent 1c7ade52
......@@ -741,58 +741,46 @@ PyInit__io(void)
ADD_TYPE(&PyIncrementalNewlineDecoder_Type, "IncrementalNewlineDecoder");
/* Interned strings */
if (!(_PyIO_str_close = PyUnicode_InternFromString("close")))
#define ADD_INTERNED(name) \
if (!_PyIO_str_ ## name && \
!(_PyIO_str_ ## name = PyUnicode_InternFromString(# name))) \
goto fail;
if (!(_PyIO_str_closed = PyUnicode_InternFromString("closed")))
goto fail;
if (!(_PyIO_str_decode = PyUnicode_InternFromString("decode")))
goto fail;
if (!(_PyIO_str_encode = PyUnicode_InternFromString("encode")))
goto fail;
if (!(_PyIO_str_fileno = PyUnicode_InternFromString("fileno")))
goto fail;
if (!(_PyIO_str_flush = PyUnicode_InternFromString("flush")))
goto fail;
if (!(_PyIO_str_getstate = PyUnicode_InternFromString("getstate")))
goto fail;
if (!(_PyIO_str_isatty = PyUnicode_InternFromString("isatty")))
goto fail;
if (!(_PyIO_str_newlines = PyUnicode_InternFromString("newlines")))
goto fail;
if (!(_PyIO_str_nl = PyUnicode_InternFromString("\n")))
goto fail;
if (!(_PyIO_str_read = PyUnicode_InternFromString("read")))
goto fail;
if (!(_PyIO_str_read1 = PyUnicode_InternFromString("read1")))
goto fail;
if (!(_PyIO_str_readable = PyUnicode_InternFromString("readable")))
goto fail;
if (!(_PyIO_str_readinto = PyUnicode_InternFromString("readinto")))
goto fail;
if (!(_PyIO_str_readline = PyUnicode_InternFromString("readline")))
goto fail;
if (!(_PyIO_str_reset = PyUnicode_InternFromString("reset")))
goto fail;
if (!(_PyIO_str_seek = PyUnicode_InternFromString("seek")))
goto fail;
if (!(_PyIO_str_seekable = PyUnicode_InternFromString("seekable")))
goto fail;
if (!(_PyIO_str_setstate = PyUnicode_InternFromString("setstate")))
goto fail;
if (!(_PyIO_str_tell = PyUnicode_InternFromString("tell")))
goto fail;
if (!(_PyIO_str_truncate = PyUnicode_InternFromString("truncate")))
goto fail;
if (!(_PyIO_str_write = PyUnicode_InternFromString("write")))
goto fail;
if (!(_PyIO_str_writable = PyUnicode_InternFromString("writable")))
ADD_INTERNED(close)
ADD_INTERNED(closed)
ADD_INTERNED(decode)
ADD_INTERNED(encode)
ADD_INTERNED(fileno)
ADD_INTERNED(flush)
ADD_INTERNED(getstate)
ADD_INTERNED(isatty)
ADD_INTERNED(newlines)
ADD_INTERNED(read)
ADD_INTERNED(read1)
ADD_INTERNED(readable)
ADD_INTERNED(readinto)
ADD_INTERNED(readline)
ADD_INTERNED(reset)
ADD_INTERNED(seek)
ADD_INTERNED(seekable)
ADD_INTERNED(setstate)
ADD_INTERNED(tell)
ADD_INTERNED(truncate)
ADD_INTERNED(write)
ADD_INTERNED(writable)
if (!_PyIO_str_nl &&
!(_PyIO_str_nl = PyUnicode_InternFromString("\n")))
goto fail;
if (!(_PyIO_empty_str = PyUnicode_FromStringAndSize(NULL, 0)))
if (!_PyIO_empty_str &&
!(_PyIO_empty_str = PyUnicode_FromStringAndSize(NULL, 0)))
goto fail;
if (!(_PyIO_empty_bytes = PyBytes_FromStringAndSize(NULL, 0)))
if (!_PyIO_empty_bytes &&
!(_PyIO_empty_bytes = PyBytes_FromStringAndSize(NULL, 0)))
goto fail;
if (!(_PyIO_zero = PyLong_FromLong(0L)))
if (!_PyIO_zero &&
!(_PyIO_zero = PyLong_FromLong(0L)))
goto fail;
state->initialized = 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment