瀏覽代碼

Fix size encoding bug (raise EBADCODER)

John Carr 16 年之前
父節點
當前提交
e9800fe7ee
共有 1 個文件被更改,包括 3 次插入2 次删除
  1. 3 2
      dulwich/pack.py

+ 3 - 2
dulwich/pack.py

@@ -631,9 +631,10 @@ def create_delta(base_buf, target_buf):
     # write delta header
     def size(l):
         r = ""
-        while l & 0x80:
+        while l >= 0x80:
             r += chr(l | 0x80)
             l >>= 7
+        r += chr(l)
         return r
     out_buf += size(len(base_buf))
     out_buf += size(len(target_buf))
@@ -707,7 +708,7 @@ def apply_delta(src_buf, delta):
         return size, delta
     src_size, delta = get_delta_header_size(delta)
     dest_size, delta = get_delta_header_size(delta)
-    assert src_size == len(src_buf)
+    assert src_size == len(src_buf), "%d vs %d" % (src_size, len(src_buf))
     while delta:
         cmd, delta = pop(delta)
         if cmd & 0x80: