about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--miasm2/expression/simplifications_common.py2
-rw-r--r--test/expression/simplifications.py2
2 files changed, 3 insertions, 1 deletions
diff --git a/miasm2/expression/simplifications_common.py b/miasm2/expression/simplifications_common.py
index 772a2609..82f2cf75 100644
--- a/miasm2/expression/simplifications_common.py
+++ b/miasm2/expression/simplifications_common.py
@@ -427,7 +427,7 @@ def simp_slice(e_s, e):
                 continue
             # arg is fully included in slice
             elif e.start <= s_start and s_stop <= e.stop:
-                out.append((arg, s_start, s_stop))
+                out.append((arg, s_start - e.start, s_stop - e.start))
                 continue
             # arg is truncated at start
             if e.start > s_start:
diff --git a/test/expression/simplifications.py b/test/expression/simplifications.py
index 2088fc7c..df7fdceb 100644
--- a/test/expression/simplifications.py
+++ b/test/expression/simplifications.py
@@ -254,6 +254,8 @@ to_test = [(ExprInt32(1) - ExprInt32(1), ExprInt32(0)),
                    ExprInt(uint32(0x1L)), 0, 32),
                   (ExprInt(uint32(0x0L)), 32, 64)))
        ),
+    (ExprCompose([(a[:16], 0, 16), (b[:16], 16, 32)])[8:32],
+     ExprCompose([(a[8:16], 0, 8), (b[:16], 8, 24)])),
 
 ]