]> granicus.if.org Git - python/commitdiff
raise TypeError when bad argument passed to cStringIO.StringIO
authorJeremy Hylton <jeremy@alum.mit.edu>
Wed, 12 Apr 2000 22:04:01 +0000 (22:04 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Wed, 12 Apr 2000 22:04:01 +0000 (22:04 +0000)
Modules/cStringIO.c

index 6a5efd666a33ddb69a7e54ab6e2dd078c1abb53a..e816178dc9b96582d01cdd93585bc5fcfc0a901c 100644 (file)
@@ -578,9 +578,14 @@ newIobject(PyObject *s) {
   Iobject *self;
   char *buf;
   int size;
-       
-  UNLESS(buf=PyString_AsString(s)) return NULL;
-  UNLESS(-1 != (size=PyString_Size(s))) return NULL;
+
+  if (!PyString_Check(s)) {
+      PyErr_Format(PyExc_TypeError, "expected string, %.200s found",
+                  s->ob_type->tp_name);
+      return NULL;
+  }
+  buf = PyString_AS_STRING(s);
+  size = PyString_GET_SIZE(s);
   UNLESS(self = PyObject_NEW(Iobject, &Itype)) return NULL;
   Py_INCREF(s);
   self->buf=buf;
@@ -603,7 +608,8 @@ static PyObject *
 IO_StringIO(PyObject *self, PyObject *args) {
   PyObject *s=0;
 
-  UNLESS(PyArg_ParseTuple(args, "|O:StringIO", &s)) return NULL;
+  if (!PyArg_ParseTuple(args, "|O:StringIO", &s))
+      return NULL;
   if(s) return newIobject(s);
   return newOobject(128);
 }