diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/datatype.c | 2 | ||||
-rw-r--r-- | src/expression.c | 2 |
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; |