From bc14efbd08a0f9fce88b13b670df26e70f912104 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 8 May 2007 23:08:31 +0000 Subject: Make the StringIO test pass. The buffer object now special-cases Unicode when concatenating. Sigh. --- Objects/bufferobject.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'Objects/bufferobject.c') diff --git a/Objects/bufferobject.c b/Objects/bufferobject.c index ddef868519..f6359608cb 100644 --- a/Objects/bufferobject.c +++ b/Objects/bufferobject.c @@ -424,15 +424,24 @@ buffer_concat(PyBufferObject *self, PyObject *other) return NULL; /* optimize special case */ + /* XXX bad idea type-wise */ if ( size == 0 ) { Py_INCREF(other); return other; } - if ( (count = (*pb->bf_getreadbuffer)(other, 0, &ptr2)) < 0 ) - return NULL; + if (PyUnicode_Check(other)) { + /* XXX HACK */ + if ( (count = (*pb->bf_getcharbuffer)(other, 0, &ptr2)) < 0 ) + return NULL; + } + else { + if ( (count = (*pb->bf_getreadbuffer)(other, 0, &ptr2)) < 0 ) + return NULL; + } + /* XXX Should return a bytes object, really */ ob = PyString_FromStringAndSize(NULL, size + count); if ( ob == NULL ) return NULL; -- cgit v1.2.1