diff options
Diffstat (limited to 'Objects/bufferobject.c')
-rw-r--r-- | Objects/bufferobject.c | 13 |
1 files changed, 11 insertions, 2 deletions
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; |