summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/datatype.c2
-rw-r--r--src/expression.c2
2 files changed, 3 insertions, 1 deletions
diff --git a/src/datatype.c b/src/datatype.c
index 095598d9..723ac649 100644
--- a/src/datatype.c
+++ b/src/datatype.c
@@ -1083,6 +1083,8 @@ struct datatype *datatype_get(const struct datatype *ptr)
void datatype_set(struct expr *expr, const struct datatype *dtype)
{
+ if (dtype == expr->dtype)
+ return;
datatype_free(expr->dtype);
expr->dtype = datatype_get(dtype);
}
diff --git a/src/expression.c b/src/expression.c
index 6605beb3..a6bde70f 100644
--- a/src/expression.c
+++ b/src/expression.c
@@ -955,7 +955,7 @@ static struct expr *concat_expr_parse_udata(const struct nftnl_udata *attr)
if (!dtype)
goto err_free;
- concat_expr->dtype = dtype;
+ concat_expr->dtype = datatype_get(dtype);
concat_expr->len = dtype->size;
return concat_expr;