diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2015-02-23 10:25:51 +0100 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2015-02-23 12:52:43 +0100 |
| commit | 835582686b695451202c89884516f16da45f3bac (patch) | |
| tree | 2d9e01ee6a5ec32a61c7a684334c26b72a053d0f /miasm2/expression/expression.py | |
| parent | 63f1875a12f70edee266846783d3b9e1e4a031e6 (diff) | |
| download | miasm-835582686b695451202c89884516f16da45f3bac.tar.gz miasm-835582686b695451202c89884516f16da45f3bac.zip | |
Expression: Exprcompose are now ordered by default; add sanitycheck for contiguous slices
Diffstat (limited to 'miasm2/expression/expression.py')
| -rw-r--r-- | miasm2/expression/expression.py | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/miasm2/expression/expression.py b/miasm2/expression/expression.py index c81f1c58..aa213dc8 100644 --- a/miasm2/expression/expression.py +++ b/miasm2/expression/expression.py @@ -29,6 +29,7 @@ import itertools +from operator import itemgetter from miasm2.expression.modint import * from miasm2.core.graph import DiGraph @@ -885,11 +886,18 @@ class ExprCompose(Expr): @args: tuple(Expr, int, int) """ + last_stop = 0 + args = sorted(args, key=itemgetter(1)) for e, start, stop in args: if e.size != stop - start: raise ValueError( "sanitycheck: ExprCompose args must have correct size!" + " %r %r %r" % (e, e.size, stop - start)) + if last_stop != start: + raise ValueError( + "sanitycheck: ExprCompose args must be contiguous!" + + " %r" % (args)) + last_stop = stop # Transform args to lists o = [] |