Print this page
11506 smatch resync

@@ -22,16 +22,18 @@
 static int my_id;
 
 static char *get_source_parameter(struct expression *expr)
 {
         struct expression *tmp;
+        const char *param_name;
         struct symbol *sym;
         char *name;
         int param;
         char *ret = NULL;
         char buf[32];
         int cnt = 0;
+        bool modified = false;
 
         tmp = expr;
         while ((tmp = get_assigned_expr(tmp))) {
                 expr = tmp;
                 if (cnt++ > 3)

@@ -46,14 +48,18 @@
         if (!name || !sym)
                 goto free;
         param = get_param_num_from_sym(sym);
         if (param < 0)
                 goto free;
-        if (param_was_set(expr))
+        param_name = get_param_name_var_sym(name, sym);
+        if (!param_name)
                 goto free;
+        if (param_was_set_var_sym(name, sym))
+                modified = true;
 
-        snprintf(buf, sizeof(buf), "p %d", param);
+        snprintf(buf, sizeof(buf), "$%d%s%s", param, param_name + 1,
+                 modified ? " [m]" : "");
         ret = alloc_string(buf);
 
 free:
         free_string(name);
         return ret;