diff --git a/Modules/_io/_iomodule.c b/Modules/_io/_iomodule.c
index f9bca1a..e046917 100644
--- a/Modules/_io/_iomodule.c
+++ b/Modules/_io/_iomodule.c
@@ -677,60 +677,47 @@
     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")))
+
+    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(readall)
+    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_str_decode = PyUnicode_InternFromString("decode")))
+
+    if (!_PyIO_empty_str &&
+        !(_PyIO_empty_str = PyUnicode_FromStringAndSize(NULL, 0)))
         goto fail;
-    if (!(_PyIO_str_encode = PyUnicode_InternFromString("encode")))
+    if (!_PyIO_empty_bytes &&
+        !(_PyIO_empty_bytes = PyBytes_FromStringAndSize(NULL, 0)))
         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_readall = PyUnicode_InternFromString("readall")))
-        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")))
-        goto fail;
-    
-    if (!(_PyIO_empty_str = PyUnicode_FromStringAndSize(NULL, 0)))
-        goto fail;
-    if (!(_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;
diff --git a/Objects/exceptions.c b/Objects/exceptions.c
index a529a3c..2eb1aab 100644
--- a/Objects/exceptions.c
+++ b/Objects/exceptions.c
@@ -2437,27 +2437,29 @@
 
     preallocate_memerrors();
 
-    PyExc_RecursionErrorInst = BaseException_new(&_PyExc_RuntimeError, NULL, NULL);
-    if (!PyExc_RecursionErrorInst)
-        Py_FatalError("Cannot pre-allocate RuntimeError instance for "
-                        "recursion errors");
-    else {
-        PyBaseExceptionObject *err_inst =
-            (PyBaseExceptionObject *)PyExc_RecursionErrorInst;
-        PyObject *args_tuple;
-        PyObject *exc_message;
-        exc_message = PyUnicode_FromString("maximum recursion depth exceeded");
-        if (!exc_message)
-            Py_FatalError("cannot allocate argument for RuntimeError "
-                            "pre-allocation");
-        args_tuple = PyTuple_Pack(1, exc_message);
-        if (!args_tuple)
-            Py_FatalError("cannot allocate tuple for RuntimeError "
-                            "pre-allocation");
-        Py_DECREF(exc_message);
-        if (BaseException_init(err_inst, args_tuple, NULL))
-            Py_FatalError("init of pre-allocated RuntimeError failed");
-        Py_DECREF(args_tuple);
+    if (!PyExc_RecursionErrorInst) {
+        PyExc_RecursionErrorInst = BaseException_new(&_PyExc_RuntimeError, NULL, NULL);
+        if (!PyExc_RecursionErrorInst)
+            Py_FatalError("Cannot pre-allocate RuntimeError instance for "
+                            "recursion errors");
+        else {
+            PyBaseExceptionObject *err_inst =
+                (PyBaseExceptionObject *)PyExc_RecursionErrorInst;
+            PyObject *args_tuple;
+            PyObject *exc_message;
+            exc_message = PyUnicode_FromString("maximum recursion depth exceeded");
+            if (!exc_message)
+                Py_FatalError("cannot allocate argument for RuntimeError "
+                                "pre-allocation");
+            args_tuple = PyTuple_Pack(1, exc_message);
+            if (!args_tuple)
+                Py_FatalError("cannot allocate tuple for RuntimeError "
+                                "pre-allocation");
+            Py_DECREF(exc_message);
+            if (BaseException_init(err_inst, args_tuple, NULL))
+                Py_FatalError("init of pre-allocated RuntimeError failed");
+            Py_DECREF(args_tuple);
+        }
     }
 
     Py_DECREF(bltinmod);
