[Jython-checkins] jython: Change bz2.BZ2File.read such that it reads the number of requested bytes,

jim.baker jython-checkins at python.org
Wed Jul 2 00:43:42 CEST 2014


http://hg.python.org/jython/rev/91b39451dc89
changeset:   7345:91b39451dc89
user:        Jim Baker <jim.baker at rackspace.com>
date:        Tue Jul 01 16:43:36 2014 -0600
summary:
  Change bz2.BZ2File.read such that it reads the number of requested bytes,
even if the underlying TextIOBase may return less.

Fixes http://bugs.jython.org/issue2176

files:
  build.xml                                 |    2 +-
  extlibs/commons-compress-1.8.1.jar        |  Bin 
  extlibs/commons-compress-1.8.jar          |  Bin 
  src/org/python/modules/bz2/PyBZ2File.java |   13 ++++++++-
  4 files changed, 12 insertions(+), 3 deletions(-)


diff --git a/build.xml b/build.xml
--- a/build.xml
+++ b/build.xml
@@ -148,7 +148,7 @@
             <pathelement path="${extlibs.dir}/antlr-3.1.3.jar" />
             <pathelement path="${extlibs.dir}/stringtemplate-3.2.1.jar" />
             <pathelement path="${extlibs.dir}/livetribe-jsr223-2.0.6.jar" />
-            <pathelement path="${extlibs.dir}/commons-compress-1.8.jar"/>
+            <pathelement path="${extlibs.dir}/commons-compress-1.8.1.jar"/>
             <pathelement path="${extlibs.dir}/asm-4.0.jar" />
             <pathelement path="${extlibs.dir}/asm-commons-4.0.jar" />
             <pathelement path="${extlibs.dir}/asm-util-4.0.jar" />
diff --git a/extlibs/commons-compress-1.8.1.jar b/extlibs/commons-compress-1.8.1.jar
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..66b0a56bd8b24478ddeb2d6eb2824280de1c1a9d
GIT binary patch
[stripped]
diff --git a/extlibs/commons-compress-1.8.jar b/extlibs/commons-compress-1.8.jar
deleted file mode 100644
index 940b0687323428c7ef6063a07a43eb77fb9cbea1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
[stripped]
diff --git a/src/org/python/modules/bz2/PyBZ2File.java b/src/org/python/modules/bz2/PyBZ2File.java
--- a/src/org/python/modules/bz2/PyBZ2File.java
+++ b/src/org/python/modules/bz2/PyBZ2File.java
@@ -180,9 +180,18 @@
                 new String[] { "size" }, 0);
 
         int size = ap.getInt(0, -1);
-        final String data = buffer.read(size);
 
-        return new PyString(data);
+        if (size == 0) { return Py.EmptyString; }
+        if (size < 0) { return new PyString(buffer.readall()); }
+        StringBuilder data = new StringBuilder(size);
+        while (data.length() < size) {
+            String chunk = buffer.read(size - data.length());
+            if (chunk.length() == 0) {
+                break;
+            }
+            data.append(chunk);
+        }
+        return new PyString(data.toString());
     }
 
     @ExposedMethod

-- 
Repository URL: http://hg.python.org/jython


More information about the Jython-checkins mailing list