diff options
Diffstat (limited to 'gitdb')
| -rw-r--r-- | gitdb/fun.py | 2 | ||||
| -rw-r--r-- | gitdb/pack.py | 1 | ||||
| -rw-r--r-- | gitdb/stream.py | 12 |
3 files changed, 11 insertions, 4 deletions
diff --git a/gitdb/fun.py b/gitdb/fun.py index 17da4e5..ac9d993 100644 --- a/gitdb/fun.py +++ b/gitdb/fun.py @@ -426,7 +426,7 @@ def pack_object_header_info(data): s = 4 # starting bit-shift size if PY3: while c & 0x80: - c = data[i] + c = byte_ord(data[i]) i += 1 size += (c & 0x7f) << s s += 7 diff --git a/gitdb/pack.py b/gitdb/pack.py index d2666d6..511e557 100644 --- a/gitdb/pack.py +++ b/gitdb/pack.py @@ -552,6 +552,7 @@ class PackFile(LazyMixin): # the amount of compressed bytes we need to get to the next offset stream_copy(ostream.read, null.write, ostream.size, chunk_size) + assert ostream.stream._br == ostream.size cur_offset += (data_offset - ostream.pack_offset) + ostream.stream.compressed_bytes_read() # if a stream is requested, reset it beforehand diff --git a/gitdb/stream.py b/gitdb/stream.py index aaf5820..04dd79f 100644 --- a/gitdb/stream.py +++ b/gitdb/stream.py @@ -289,11 +289,18 @@ class DecompressMemMapReader(LazyMixin): # if we hit the end of the stream # NOTE: Behavior changed in PY2.7 onward, which requires special handling to make the tests work properly. # They are thorough, and I assume it is truly working. - if PY26: + # Why is this logic as convoluted as it is ? Please look at the table in + # https://github.com/gitpython-developers/gitdb/issues/19 to learn about the test-results. + # Bascially, on py2.6, you want to use branch 1, whereas on all other python version, the second branch + # will be the one that works. + # However, the zlib VERSIONs as well as the platform check is used to further match the entries in the + # table in the github issue. This is it ... it was the only way I could make this work everywhere. + # IT's CERTAINLY GOING TO BITE US IN THE FUTURE ... . + if PY26 or ((zlib.ZLIB_VERSION == '1.2.7' or zlib.ZLIB_VERSION == '1.2.5') and not sys.platform == 'darwin'): unused_datalen = len(self._zip.unconsumed_tail) else: unused_datalen = len(self._zip.unconsumed_tail) + len(self._zip.unused_data) - # end handle very special case ... + # # end handle very special case ... self._cbr += len(indata) - unused_datalen self._br += len(dcompdat) @@ -374,7 +381,6 @@ class DeltaApplyReader(LazyMixin): # Aggregate all deltas into one delta in reverse order. Hence we take # the last delta, and reverse-merge its ancestor delta, until we receive # the final delta data stream. - # print "Handling %i delta streams, sizes: %s" % (len(self._dstreams), [ds.size for ds in self._dstreams]) dcl = connect_deltas(self._dstreams) # call len directly, as the (optional) c version doesn't implement the sequence |
