[Python-checkins] r67997 - sandbox/trunk/io-c/_textio.c

amaury.forgeotdarc python-checkins at python.org
Mon Dec 29 00:36:20 CET 2008


Author: amaury.forgeotdarc
Date: Mon Dec 29 00:36:20 2008
New Revision: 67997
Log:
Use the "internal" TextIOWrapper_get_decoded_chars API in TextIOWrapper.read().
This fixes one test
Modified:
 sandbox/trunk/io-c/_textio.c
Modified: sandbox/trunk/io-c/_textio.c
==============================================================================
--- sandbox/trunk/io-c/_textio.c	(original)
+++ sandbox/trunk/io-c/_textio.c	Mon Dec 29 00:36:20 2008
@@ -738,6 +738,11 @@
 if (!PyArg_ParseTuple(args, "|n:read", &n))
 return NULL;
 
+ result = TextIOWrapper_get_decoded_chars(self, -1);
+
+ if (result == NULL)
+	return NULL;
+
 if (n < 0) {
 /* Read everything */
 PyObject *bytes = PyObject_CallMethod(self->buffer, "read", NULL);
@@ -747,22 +752,15 @@
 decoded = PyObject_CallMethod(self->decoder, "decode",
 				 "Oi", bytes, /*final=*/1);
 
- if (self->decoded_chars) {
- result = PyNumber_Add(self->decoded_chars, decoded);
- if (result == NULL)
- goto fail;
- Py_CLEAR(self->decoded_chars);
- Py_DECREF(decoded);
- }
- else {
- result = decoded;
- }
+	PyUnicode_AppendAndDel(&result, decoded);
+	if (result == NULL)
+	 goto fail;
+
 Py_CLEAR(self->snapshot);
 return result;
 }
 else {
 int res = 1;
- PyObject *result = TextIOWrapper_get_decoded_chars(self, -1);
 
 /* Keep reading chunks until we have n characters to return */
 while (res == 1) {


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /