about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorserpilliere <devnull@localhost>2012-06-11 13:00:16 +0200
committerserpilliere <devnull@localhost>2012-06-11 13:00:16 +0200
commitd9d2a8294a6e305ae01f30bf7cc43fd5bbba2eff (patch)
tree6329954ce6d483b0859c6fb3c0ba4721c0c216fb
parent3278048f0d77f0c59ac8176f0fadade3155ad47d (diff)
downloadmiasm-d9d2a8294a6e305ae01f30bf7cc43fd5bbba2eff.tar.gz
miasm-d9d2a8294a6e305ae01f30bf7cc43fd5bbba2eff.zip
expression: fix compare expr list
-rw-r--r--miasm/expression/expression.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/miasm/expression/expression.py b/miasm/expression/expression.py
index 76113ffb..d3a195c8 100644
--- a/miasm/expression/expression.py
+++ b/miasm/expression/expression.py
@@ -526,7 +526,7 @@ class ExprOp(Expr):
             raise ValueError('not imple', str(self))
     def canonize(self):
         args = [x.canonize() for x in self.args]
-        if self.op in ['+', '^', '&', '|', '*']:
+        if self.op in ['+', '^', '&', '|', '*', '==']:
             args = canonize_expr_list(args)
         return ExprOp(self.op, *args)
 
@@ -691,7 +691,13 @@ def compare_exprs_compose(e1, e2):
 
 def compare_expr_list_compose(l1_e, l2_e):
     for i in xrange(min(len(l1_e), len(l2_e))):
-        x = compare_exprs_compose(l1_e, l2_e)
+        x = compare_exprs_compose(l1_e[i], l2_e[i])
+        if x: return x
+    return cmp(len(l1_e), len(l2_e))
+
+def compare_expr_list(l1_e, l2_e):
+    for i in xrange(min(len(l1_e), len(l2_e))):
+        x = compare_exprs(l1_e[i], l2_e[i])
         if x: return x
     return cmp(len(l1_e), len(l2_e))
 
@@ -728,7 +734,7 @@ def compare_exprs(e1, e2):
     elif c1 == ExprOp:
         if e1.op != e2.op:
             return cmp(e1.op, e2.op)
-        return compare_exprs_list(e1.arg, e2.arg)
+        return compare_expr_list(e1.args, e2.args)
     elif c1 == ExprSlice:
         x = compare_exprs(e1.arg, e2.arg)
         if x: return x