Bug #1548891: The cStringIO.StringIO() constructor now encodes unicode
arguments with the system default encoding just like the write()
method does, instead of converting it to a raw buffer.
diff --git a/Modules/cStringIO.c b/Modules/cStringIO.c
index 4debb72..03ef461 100644
--- a/Modules/cStringIO.c
+++ b/Modules/cStringIO.c
@@ -657,11 +657,9 @@
   char *buf;
   Py_ssize_t size;
 
-  if (PyObject_AsReadBuffer(s, (const void **)&buf, &size)) {
-      PyErr_Format(PyExc_TypeError, "expected read buffer, %.200s found",
-		   s->ob_type->tp_name);
+  if (PyObject_AsCharBuffer(s, (const void **)&buf, &size) != 0)
       return NULL;
-  }
+
   self = PyObject_New(Iobject, &Itype);
   if (!self) return NULL;
   Py_INCREF(s);