[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