changeset 45878:68aedad4c11c

pure: guard against empty blocks If blocks is empty, we append `None` to the returned list, which is incorrect. This subtle issue was caught by pytype, which correctly identified the return value as List[Optional[Tuple]] because of this possibility. Differential Revision: https://phab.mercurial-scm.org/D9279
author Gregory Szorc <gregory.szorc@gmail.com>
date Sat, 07 Nov 2020 16:45:58 -0800
parents 5c736ba5dc27
children 11842aad3195
files mercurial/pure/bdiff.py
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/pure/bdiff.py	Mon Nov 16 16:38:57 2020 +0100
+++ b/mercurial/pure/bdiff.py	Sat Nov 07 16:45:58 2020 -0800
@@ -51,7 +51,10 @@
                 shift += 1
         r.append((a1, b1, l1 + shift))
         prev = a2 + shift, b2 + shift, l2 - shift
-    r.append(prev)
+
+    if prev is not None:
+        r.append(prev)
+
     return r