From 7212bfe06d3c1be29ab73d63f8fb70429154aed9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Mon, 19 Mar 2012 17:35:36 +0000 Subject: [PATCH] Fix replace_dissimilar. Left over iterator code was cauing problems. --- scripts/tracediff2.py | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/scripts/tracediff2.py b/scripts/tracediff2.py index d6fd392..bfdac91 100755 --- a/scripts/tracediff2.py +++ b/scripts/tracediff2.py @@ -99,7 +99,6 @@ def readtrace(trace, calls): stdout = subprocess.PIPE, ) - calls = [] parser = Loader(p.stdout) parser.parse() return parser.calls @@ -186,15 +185,11 @@ class SDiffer: def replace_dissimilar(self, alo, ahi, blo, bhi): assert alo < ahi and blo < bhi if bhi - blo < ahi - alo: - first = self.insert(blo, bhi) - second = self.delete(alo, ahi) + self.insert(alo, alo, blo, bhi) + self.delete(alo, ahi, bhi, bhi) else: - first = self.delete(alo, ahi) - second = self.insert(blo, bhi) - - for g in first, second: - for line in g: - yield line + self.delete(alo, ahi, blo, blo) + self.insert(ahi, ahi, blo, bhi) def replace_value(self, a, b): if b == a: @@ -212,6 +207,8 @@ class SDiffer: escape = "\33[" def delete(self, alo, ahi, blo, bhi): + assert alo < ahi + assert blo == bhi for i in xrange(alo, ahi): call = self.a[i] self.highlighter.write('- ') @@ -221,6 +218,8 @@ class SDiffer: self.dumpCall(call) def insert(self, alo, ahi, blo, bhi): + assert alo == ahi + assert blo < bhi for i in xrange(blo, bhi): call = self.b[i] self.highlighter.write('+ ') @@ -229,6 +228,8 @@ class SDiffer: self.dumpCall(call) def equal(self, alo, ahi, blo, bhi): + assert alo < ahi and blo < bhi + assert ahi - alo == bhi - blo for i in xrange(0, bhi - blo): self.highlighter.write(' ') a_call = self.a[alo + i] @@ -245,21 +246,21 @@ class SDiffer: if aNo is None: self.highlighter.write(' '*self.aSpace) else: - aStr = str(aNo) + aNoStr = str(aNo) self.highlighter.strike() self.highlighter.color(self.delete_color) - self.highlighter.write(str(aNo)) + self.highlighter.write(aNoStr) self.highlighter.normal() - self.aSpace = len(aStr) + self.aSpace = len(aNoStr) self.highlighter.write(' ') if bNo is None: - self.highlighter.write(' '*self.aSpace) + self.highlighter.write(' '*self.bSpace) else: - bStr = str(bNo) + bNoStr = str(bNo) self.highlighter.color(self.insert_color) - self.highlighter.write(str(bNo)) + self.highlighter.write(bNoStr) self.highlighter.normal() - self.bSpace = len(bStr) + self.bSpace = len(bNoStr) self.highlighter.write(' ') def dumpCall(self, call): -- 2.43.0