From 33438b3b6cc97db3a336b7e9570d495121a3444a Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Thu, 6 Apr 2023 18:30:58 +0300 Subject: [PATCH] extra: revert the mod_expr changes for modify expression hooks I thought I had already committed this revert. The mod_expr in a modify expression should be the expression which matches the var/sym. It should not be the expression which modifies it. You can sometimes use expr_get_parent_expr() to get that, but sometimes not... :/ Signed-off-by: Dan Carpenter --- smatch_extra.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/smatch_extra.c b/smatch_extra.c index d7bce91e..cf0e2e7d 100644 --- a/smatch_extra.c +++ b/smatch_extra.c @@ -1116,7 +1116,7 @@ static void do_array_assign(struct expression *left, int op, struct expression * set_extra_array_mod(left, alloc_estate_rl(rl)); } -static void match_vanilla_assign(struct expression *left, struct expression *right, struct expression *mod_expr) +static void match_vanilla_assign(struct expression *left, struct expression *right) { struct range_list *orig_rl = NULL; struct range_list *rl = NULL; @@ -1210,7 +1210,7 @@ static void match_vanilla_assign(struct expression *left, struct expression *rig } done: - set_extra_mod(name, sym, mod_expr, state); + set_extra_mod(name, sym, left, state); free: free_string(right_name); } @@ -1239,7 +1239,7 @@ static void match_assign(struct expression *expr) !is_fake_call(right)) return; /* handled in smatch_function_hooks.c */ if (expr->op == '=') { - match_vanilla_assign(left, right, expr); + match_vanilla_assign(left, right); return; } -- 2.11.4.GIT