cffi: adjust the list returned by bdiff.blocks to never have a None entry
authorMatt Harbison <matt_harbison@yahoo.com>
Tue, 08 Nov 2022 13:52:46 -0500
changeset 49597 b2666e767029
parent 49596 b8389533ba3a
child 49598 594fc56c0af7
cffi: adjust the list returned by bdiff.blocks to never have a None entry This was flagged by pytype after merging the corresponding bdiff.pyi in cext: File ".../mercurial/cffi/bdiff.py", line 44, in blocks: bad return type [bad-return-type] Expected: List[Tuple[int, int, int, int]] Actually returned: List[None] AFAICT, all callers immediately unpack the tuple into 4 variables, so a `None` entry would simply crash if they aren't all overwritten. As long a `count` and the link list are consistent, this shouldn't be a problem. This placates both pytype and PyCharm (which complained about the `i` in `rl[i]` having the wrong type with the old code).
mercurial/cffi/bdiff.py
--- a/mercurial/cffi/bdiff.py	Tue Nov 08 13:38:06 2022 -0500
+++ b/mercurial/cffi/bdiff.py	Tue Nov 08 13:52:46 2022 -0500
@@ -29,7 +29,7 @@
         count = lib.bdiff_diff(a[0], an, b[0], bn, l)
         if count < 0:
             raise MemoryError
-        rl = [None] * count
+        rl = [(0, 0, 0, 0)] * count
         h = l.next
         i = 0
         while h: