[pypy-commit] pypy ec-keepalive: hg merge default

arigo pypy.commits at gmail.com
Mon Jan 4 10:55:36 EST 2016


Author: Armin Rigo <arigo at tunes.org>
Branch: ec-keepalive
Changeset: r81547:59373f8be2eb
Date: 2016-01-04 16:54 +0100
http://bitbucket.org/pypy/pypy/changeset/59373f8be2eb/

Log:	hg merge default

diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -28,7 +28,7 @@
     DEALINGS IN THE SOFTWARE.
 
 
-PyPy Copyright holders 2003-2015
+PyPy Copyright holders 2003-2016
 ----------------------------------- 
 
 Except when otherwise stated (look for LICENSE files or information at
diff --git a/rpython/rlib/buffer.py b/rpython/rlib/buffer.py
--- a/rpython/rlib/buffer.py
+++ b/rpython/rlib/buffer.py
@@ -99,9 +99,10 @@
         self.readonly = buffer.readonly
         if isinstance(buffer, SubBuffer):     # don't nest them
             # we want a view (offset, size) over a view
-            # (buffer.offset, buffer.size) over buffer.buffer
-            at_most = buffer.size - offset
-            if size > at_most:
+            # (buffer.offset, buffer.size) over buffer.buffer.
+            # Note that either '.size' can be -1 to mean 'up to the end'.
+            at_most = buffer.getlength() - offset
+            if size > at_most or size < 0:
                 if at_most < 0:
                     at_most = 0
                 size = at_most
diff --git a/rpython/rlib/test/test_buffer.py b/rpython/rlib/test/test_buffer.py
--- a/rpython/rlib/test/test_buffer.py
+++ b/rpython/rlib/test/test_buffer.py
@@ -45,6 +45,19 @@
     ssbuf = SubBuffer(sbuf, 3, 2)
     assert ssbuf.getslice(0, 2, 1, 2) == 'ld'
     assert ssbuf.as_str_and_offset_maybe() == ('hello world', 9)
+    #
+    ss2buf = SubBuffer(sbuf, 1, -1)
+    assert ss2buf.as_str() == 'orld'
+    assert ss2buf.getlength() == 4
+    ss3buf = SubBuffer(ss2buf, 1, -1)
+    assert ss3buf.as_str() == 'rld'
+    assert ss3buf.getlength() == 3
+    #
+    ss4buf = SubBuffer(buf, 3, 4)
+    assert ss4buf.as_str() == 'lo w'
+    ss5buf = SubBuffer(ss4buf, 1, -1)
+    assert ss5buf.as_str() == 'o w'
+    assert ss5buf.getlength() == 3
 
 def test_repeated_subbuffer():
     buf = StringBuffer('x' * 10000)


More information about the pypy-commit mailing list