about summary refs log tree commit diff stats
path: root/miasm2/expression/expression_helper.py
diff options
context:
space:
mode:
authorCamille Mougey <camille.mougey@cea.fr>2015-02-10 10:53:38 +0100
committerCamille Mougey <camille.mougey@cea.fr>2015-02-10 10:53:38 +0100
commit388b74c92f518584e0351af894588d90a48624ce (patch)
treecbbabcbbfa9b13903fd9b429d46b8e91fa98e633 /miasm2/expression/expression_helper.py
parent33189681bf13f88a1e39383a86079fc001ec619d (diff)
downloadmiasm-388b74c92f518584e0351af894588d90a48624ce.tar.gz
miasm-388b74c92f518584e0351af894588d90a48624ce.zip
VariablesIdentifier: Handle corner cases (using var ident on already computed eq)
Diffstat (limited to 'miasm2/expression/expression_helper.py')
-rw-r--r--miasm2/expression/expression_helper.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/miasm2/expression/expression_helper.py b/miasm2/expression/expression_helper.py
index c94bc353..825cad60 100644
--- a/miasm2/expression/expression_helper.py
+++ b/miasm2/expression/expression_helper.py
@@ -257,9 +257,13 @@ class Variables_Identifier(object):
 
         ## Build initial needs
         for var_id, var_expr in self._vars.iteritems():
+            ### Handle corner cases while using Variable Identifier on an
+            ### already computed equation
             needs[var_id] = [var_name
                              for var_name in var_expr.get_r(mem_read=True)
-                             if self.is_var_identifier(var_name)]
+                             if self.is_var_identifier(var_name) and \
+                                 var_name in todo and \
+                                 var_name != var_id]
 
         ## Build order list
         while todo:
@@ -271,7 +275,6 @@ class Variables_Identifier(object):
                         # A dependency is not met
                         all_met = False
                         break
-
                 if not all_met:
                     continue