summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2012-12-09 14:02:11 +0100
committerPatrick McHardy <kaber@trash.net>2012-12-09 14:08:11 +0100
commitc6766087f5f67a3bc625ea3bca43c380d1290cba (patch)
treefb7f6bed29f6ed6b4d34271bc9edd068a6bb40d4
parent9fda8078b247524907259015ae3459024c736b76 (diff)
expression: fix constant expression splicing
Fix reversed order during constant splicing. Signed-off-by: Patrick McHardy <kaber@trash.net>
-rw-r--r--src/expression.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/expression.c b/src/expression.c
index 5dbc327c..0bd2bb43 100644
--- a/src/expression.c
+++ b/src/expression.c
@@ -291,11 +291,13 @@ struct expr *constant_expr_splice(struct expr *expr, unsigned int len)
BYTEORDER_INVALID, len, NULL);
mpz_init2(mask, len);
mpz_bitmask(mask, len);
+ mpz_lshift_ui(mask, expr->len - len);
+
mpz_set(slice->value, expr->value);
mpz_and(slice->value, slice->value, mask);
+ mpz_rshift_ui(slice->value, expr->len - len);
mpz_clear(mask);
- mpz_rshift_ui(expr->value, len);
expr->len -= len;
return slice;
}