diff --git a/Modules/_textio.c b/Modules/_textio.c
index a61e6bc..dbfc8ae 100644
--- a/Modules/_textio.c
+++ b/Modules/_textio.c
@@ -1,8 +1,8 @@
 /*
     An implementation of Text I/O as defined by PEP 3116 - "New I/O"
-    
+
     Classes defined here: TextIOBase, IncrementalNewlineDecoder, TextIOWrapper.
-    
+
     Written by Amaury Forgeot d'Arc and Antoine Pitrou
 */
 
@@ -169,7 +169,7 @@
 } PyNewLineDecoderObject;
 
 static int
-IncrementalNewlineDecoder_init(PyNewLineDecoderObject *self, 
+IncrementalNewlineDecoder_init(PyNewLineDecoderObject *self,
                                PyObject *args, PyObject *kwds)
 {
     PyObject *decoder;
@@ -215,7 +215,7 @@
 #define SEEN_ALL (SEEN_CR | SEEN_LF | SEEN_CRLF)
 
 PyObject *
-_PyIncrementalNewlineDecoder_decode(PyObject *_self, 
+_PyIncrementalNewlineDecoder_decode(PyObject *_self,
                                     PyObject *input, int final)
 {
     PyObject *output;
@@ -267,7 +267,7 @@
      * then readline() is sure to get \r\n in one pass
      */
     if (!final) {
-        if (output_len > 0 
+        if (output_len > 0
             && PyUnicode_AS_UNICODE(output)[output_len - 1] == '\r') {
 
             if (Py_REFCNT(output) == 1) {
@@ -433,7 +433,7 @@
 }
 
 static PyObject *
-IncrementalNewlineDecoder_decode(PyNewLineDecoderObject *self, 
+IncrementalNewlineDecoder_decode(PyNewLineDecoderObject *self,
                                  PyObject *args, PyObject *kwds)
 {
     char *kwlist[] = {"input", "final", NULL};
@@ -635,7 +635,7 @@
 
     /* Reads and writes are internally buffered in order to speed things up.
        However, any read will first flush the write buffer if itsn't empty.
-    
+
        Please also note that text to be written is first encoded before being
        buffered. This is necessary so that encoding errors are immediately
        reported to the caller, but it unfortunately means that the
@@ -731,7 +731,7 @@
     encodefunc_t encodefunc;
 } encodefuncentry;
 
-encodefuncentry encodefuncs[] = {
+static encodefuncentry encodefuncs[] = {
     {"ascii",       (encodefunc_t) ascii_encode},
     {"iso8859-1",   (encodefunc_t) latin1_encode},
     {"utf-16-be",   (encodefunc_t) utf16be_encode},
@@ -942,7 +942,7 @@
 
     self->buffer = buffer;
     Py_INCREF(buffer);
-    
+
     if (Py_TYPE(buffer) == &PyBufferedReader_Type ||
         Py_TYPE(buffer) == &PyBufferedWriter_Type ||
         Py_TYPE(buffer) == &PyBufferedRandom_Type) {
@@ -1084,7 +1084,7 @@
     return NULL;
 }
 
-/* Flush the internal write buffer. This doesn't explicitly flush the 
+/* Flush the internal write buffer. This doesn't explicitly flush the
    underlying buffered object, though. */
 static int
 _TextIOWrapper_writeflush(PyTextIOWrapperObject *self)
@@ -1177,7 +1177,7 @@
         if (_TextIOWrapper_writeflush(self) < 0)
             return NULL;
     }
-    
+
     if (needflush) {
         ret = PyObject_CallMethodObjArgs(self->buffer, _PyIO_str_flush, NULL);
         if (ret == NULL)
