From 5a04aec384c6d8346ee31396aad08b75421efae5 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Tue, 25 Jun 2002 00:25:30 +0000 Subject: Fix SF bug 546434 -- buffer slice type inconsistent. --- Misc/NEWS | 5 +++++ Objects/bufferobject.c | 13 ------------- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/Misc/NEWS b/Misc/NEWS index 99c3547..9fb542d 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -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"]). diff --git a/Objects/bufferobject.c b/Objects/bufferobject.c index 031c000..690f56b 100644 --- a/Objects/bufferobject.c +++ b/Objects/bufferobject.c @@ -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, -- cgit v0.12