Fix SF bug 546434 -- buffer slice type inconsistent.
This commit is contained in:
parent
17031bf421
commit
5a04aec384
|
@ -6,6 +6,11 @@ Type/class unification and new-style classes
|
|||
|
||||
Core and builtins
|
||||
|
||||
- Slices and repetitions of buffer objects now consistently return
|
||||
a string. Formerly, strings would be returned most of the time,
|
||||
but a buffer object would be returned when the repetition count
|
||||
was one or when the slice range was all inclusive.
|
||||
|
||||
- The __slots__ variable can now mention "private" names, and the
|
||||
right thing will happen (e.g. __slots__ = ["__foo"]).
|
||||
|
||||
|
|
|
@ -296,13 +296,6 @@ buffer_concat(PyBufferObject *self, PyObject *other)
|
|||
if ( (count = (*pb->bf_getreadbuffer)(other, 0, &p2)) < 0 )
|
||||
return NULL;
|
||||
|
||||
/* optimize special case */
|
||||
if ( count == 0 )
|
||||
{
|
||||
Py_INCREF(self);
|
||||
return (PyObject *)self;
|
||||
}
|
||||
|
||||
ob = PyString_FromStringAndSize(NULL, self->b_size + count);
|
||||
p1 = PyString_AS_STRING(ob);
|
||||
memcpy(p1, self->b_ptr, self->b_size);
|
||||
|
@ -361,12 +354,6 @@ buffer_slice(PyBufferObject *self, int left, int right)
|
|||
right = 0;
|
||||
if ( right > self->b_size )
|
||||
right = self->b_size;
|
||||
if ( left == 0 && right == self->b_size )
|
||||
{
|
||||
/* same as self */
|
||||
Py_INCREF(self);
|
||||
return (PyObject *)self;
|
||||
}
|
||||
if ( right < left )
|
||||
right = left;
|
||||
return PyString_FromStringAndSize((char *)self->b_ptr + left,
|
||||
|
|
Loading…
Reference in New Issue