give the C implementation of TextIOWrapper the errors property #6217
diff --git a/Modules/_io/stringio.c b/Modules/_io/stringio.c
index 136f41d..a0d8a51 100644
--- a/Modules/_io/stringio.c
+++ b/Modules/_io/stringio.c
@@ -661,22 +661,6 @@
 }
 
 static PyObject *
-stringio_encoding(StringIOObject *self, void *context)
-{
-    CHECK_INITIALIZED(self);
-    CHECK_CLOSED(self);
-    Py_RETURN_NONE;
-}
-
-static PyObject *
-stringio_errors(StringIOObject *self, void *context)
-{
-    CHECK_INITIALIZED(self);
-    CHECK_CLOSED(self);
-    return PyUnicode_FromString("strict");
-}
-
-static PyObject *
 stringio_line_buffering(StringIOObject *self, void *context)
 {
     CHECK_INITIALIZED(self);
@@ -720,8 +704,6 @@
         will be found.
     */
     {"buffer",         (getter)stringio_buffer,         NULL, NULL},
-    {"encoding",       (getter)stringio_encoding,       NULL, NULL},
-    {"errors",         (getter)stringio_errors,         NULL, NULL},
     {"line_buffering", (getter)stringio_line_buffering, NULL, NULL},
     {NULL}
 };
diff --git a/Modules/_io/textio.c b/Modules/_io/textio.c
index c8d2833..3ec8be6 100644
--- a/Modules/_io/textio.c
+++ b/Modules/_io/textio.c
@@ -104,6 +104,18 @@
     Py_RETURN_NONE;
 }
 
+PyDoc_STRVAR(TextIOBase_errors_doc,
+    "The error setting of the decoder or encoder.\n"
+    "\n"
+    "Subclasses should override.\n"
+    );
+
+static PyObject *
+TextIOBase_errors_get(PyObject *self, void *context)
+{
+    Py_RETURN_NONE;
+}
+
 
 static PyMethodDef TextIOBase_methods[] = {
     {"detach", (PyCFunction)TextIOBase_detach, METH_NOARGS, TextIOBase_detach_doc},
@@ -116,6 +128,7 @@
 static PyGetSetDef TextIOBase_getset[] = {
     {"encoding", (getter)TextIOBase_encoding_get, NULL, TextIOBase_encoding_doc},
     {"newlines", (getter)TextIOBase_newlines_get, NULL, TextIOBase_newlines_doc},
+    {"errors", (getter)TextIOBase_errors_get, NULL, TextIOBase_errors_doc},
     {NULL}
 };
 
@@ -2462,6 +2475,13 @@
 }
 
 static PyObject *
+TextIOWrapper_errors_get(PyTextIOWrapperObject *self, void *context)
+{
+    CHECK_INITIALIZED(self);
+    return PyUnicode_FromString(PyBytes_AS_STRING(self->errors));
+}
+
+static PyObject *
 TextIOWrapper_chunk_size_get(PyTextIOWrapperObject *self, void *context)
 {
     CHECK_INITIALIZED(self);
@@ -2519,6 +2539,7 @@
 /*    {"mode", (getter)TextIOWrapper_mode_get, NULL, NULL},
 */
     {"newlines", (getter)TextIOWrapper_newlines_get, NULL, NULL},
+    {"errors", (getter)TextIOWrapper_errors_get, NULL, NULL},
     {"_CHUNK_SIZE", (getter)TextIOWrapper_chunk_size_get,
                     (setter)TextIOWrapper_chunk_size_set, NULL},
     {NULL}