summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Misc/NEWS5
-rw-r--r--Objects/bufferobject.c13
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,