mirror of
https://github.com/python/cpython.git
synced 2025-11-26 21:33:10 +00:00
Fix SF bug 546434 -- buffer slice type inconsistent.
This commit is contained in:
parent
17031bf421
commit
5a04aec384
2 changed files with 5 additions and 13 deletions
|
|
@ -6,6 +6,11 @@ Type/class unification and new-style classes
|
||||||
|
|
||||||
Core and builtins
|
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
|
- The __slots__ variable can now mention "private" names, and the
|
||||||
right thing will happen (e.g. __slots__ = ["__foo"]).
|
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 )
|
if ( (count = (*pb->bf_getreadbuffer)(other, 0, &p2)) < 0 )
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* optimize special case */
|
|
||||||
if ( count == 0 )
|
|
||||||
{
|
|
||||||
Py_INCREF(self);
|
|
||||||
return (PyObject *)self;
|
|
||||||
}
|
|
||||||
|
|
||||||
ob = PyString_FromStringAndSize(NULL, self->b_size + count);
|
ob = PyString_FromStringAndSize(NULL, self->b_size + count);
|
||||||
p1 = PyString_AS_STRING(ob);
|
p1 = PyString_AS_STRING(ob);
|
||||||
memcpy(p1, self->b_ptr, self->b_size);
|
memcpy(p1, self->b_ptr, self->b_size);
|
||||||
|
|
@ -361,12 +354,6 @@ buffer_slice(PyBufferObject *self, int left, int right)
|
||||||
right = 0;
|
right = 0;
|
||||||
if ( right > self->b_size )
|
if ( right > self->b_size )
|
||||||
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 )
|
if ( right < left )
|
||||||
right = left;
|
right = left;
|
||||||
return PyString_FromStringAndSize((char *)self->b_ptr + left,
|
return PyString_FromStringAndSize((char *)self->b_ptr + left,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue