[Python-3000-checkins] r58826 - python/branches/py3k-pep3137/Modules/_fileio.c python/branches/py3k-pep3137/Modules/arraymodule.c

christian.heimes python-3000-checkins at python.org
Sat Nov 3 13:30:43 CET 2007


Author: christian.heimes
Date: Sat Nov  3 13:30:43 2007
New Revision: 58826

Modified:
   python/branches/py3k-pep3137/Modules/_fileio.c
   python/branches/py3k-pep3137/Modules/arraymodule.c
Log:
Fixed bug in test_array as mentioned by Brett on the ml. 
Changed fileio_read() and _readall() to use PyString instead of PyBytes
Fixed array to support PyString, too.

Modified: python/branches/py3k-pep3137/Modules/_fileio.c
==============================================================================
--- python/branches/py3k-pep3137/Modules/_fileio.c	(original)
+++ python/branches/py3k-pep3137/Modules/_fileio.c	Sat Nov  3 13:30:43 2007
@@ -400,14 +400,14 @@
 	Py_ssize_t total = 0;
 	int n;
 
-	result = PyBytes_FromStringAndSize(NULL, DEFAULT_BUFFER_SIZE);
+	result = PyString_FromStringAndSize(NULL, DEFAULT_BUFFER_SIZE);
 	if (result == NULL)
 		return NULL;
 
 	while (1) {
 		Py_ssize_t newsize = total + DEFAULT_BUFFER_SIZE;
-		if (PyBytes_GET_SIZE(result) < newsize) {
-			if (PyBytes_Resize(result, newsize) < 0) {
+		if (PyString_GET_SIZE(result) < newsize) {
+			if (_PyString_Resize(&result, newsize) < 0) {
 				if (total == 0) {
 					Py_DECREF(result);
 					return NULL;
@@ -419,7 +419,7 @@
 		Py_BEGIN_ALLOW_THREADS
 		errno = 0;
 		n = read(self->fd,
-			 PyBytes_AS_STRING(result) + total,
+			 PyString_AS_STRING(result) + total,
 			 newsize - total);
 		Py_END_ALLOW_THREADS
 		if (n == 0)
@@ -438,8 +438,8 @@
 		total += n;
 	}
 
-	if (PyBytes_GET_SIZE(result) > total) {
-		if (PyBytes_Resize(result, total) < 0) {
+	if (PyString_GET_SIZE(result) > total) {
+		if (_PyString_Resize(&result, total) < 0) {
 			/* This should never happen, but just in case */
 			Py_DECREF(result);
 			return NULL;
@@ -468,10 +468,10 @@
 		return fileio_readall(self);
 	}
 
-	bytes = PyBytes_FromStringAndSize(NULL, size);
+	bytes = PyString_FromStringAndSize(NULL, size);
 	if (bytes == NULL)
 		return NULL;
-	ptr = PyBytes_AsString(bytes);
+	ptr = PyString_AS_STRING(bytes);
 
 	Py_BEGIN_ALLOW_THREADS
 	errno = 0;
@@ -486,7 +486,7 @@
 	}
 
 	if (n != size) {
-		if (PyBytes_Resize(bytes, n) < 0) {
+		if (_PyString_Resize(&bytes, n) < 0) {
 			Py_DECREF(bytes);
 			return NULL;
 		}

Modified: python/branches/py3k-pep3137/Modules/arraymodule.c
==============================================================================
--- python/branches/py3k-pep3137/Modules/arraymodule.c	(original)
+++ python/branches/py3k-pep3137/Modules/arraymodule.c	Sat Nov  3 13:30:43 2007
@@ -1212,14 +1212,14 @@
 	if (b == NULL)
 		return NULL;
 
-	if (!PyBytes_Check(b)) {
+	if (!PyString_Check(b)) {
 		PyErr_SetString(PyExc_TypeError,
 				"read() didn't return bytes");
 		Py_DECREF(b);
 		return NULL;
 	}
 
-	if (PyBytes_GET_SIZE(b) != nbytes) {
+	if (PyString_GET_SIZE(b) != nbytes) {
 		PyErr_SetString(PyExc_EOFError,
 				"read() didn't return enough bytes");
 		Py_DECREF(b);
@@ -1263,7 +1263,7 @@
 		PyObject *bytes, *res;
 		if (i*BLOCKSIZE + size > nbytes)
 			size = nbytes - i*BLOCKSIZE;
-		bytes = PyBytes_FromStringAndSize(ptr, size);
+		bytes = PyString_FromStringAndSize(ptr, size);
 		if (bytes == NULL)
 			return NULL;
 		res = PyObject_CallMethod(f, "write", "O", bytes);
@@ -1395,7 +1395,7 @@
 static PyObject *
 array_tostring(arrayobject *self, PyObject *unused)
 {
-	return PyBytes_FromStringAndSize(self->ob_item,
+	return PyString_FromStringAndSize(self->ob_item,
                                          Py_Size(self) * self->ob_descr->itemsize);
 }
 
@@ -1861,6 +1861,7 @@
 
 	if (!(initial == NULL || PyList_Check(initial)
 	      || PyBytes_Check(initial)
+	      || PyString_Check(initial)
 	      || PyTuple_Check(initial)
 	      || ((c=='u') && PyUnicode_Check(initial)))) {
 		it = PyObject_GetIter(initial);
@@ -1904,7 +1905,9 @@
 					}
 					Py_DECREF(v);
 				}
-			} else if (initial != NULL && PyBytes_Check(initial)) {
+			}
+			else if (initial != NULL && (PyBytes_Check(initial) ||
+					   PyString_Check(initial))) {
 				PyObject *t_initial, *v;
 				t_initial = PyTuple_Pack(1, initial);
 				if (t_initial == NULL) {
@@ -1919,7 +1922,8 @@
 					return NULL;
 				}
 				Py_DECREF(v);
-			} else if (initial != NULL && PyUnicode_Check(initial))  {
+			}
+			else if (initial != NULL && PyUnicode_Check(initial))  {
 				Py_ssize_t n = PyUnicode_GET_DATA_SIZE(initial);
 				if (n > 0) {
 					arrayobject *self = (arrayobject *)a;


More information about the Python-3000-checkins mailing list