Print this page
12166 resync smatch to 0.6.1-rc1-il-3

@@ -297,10 +297,21 @@
                         return;
                 snprintf(tmp, 25, "%s", sval_to_numstr(sval));
                 append(buf, tmp, len);
                 return;
         }
+        case EXPR_FVALUE: {
+                sval_t sval = {};
+                char tmp[25];
+
+                *complicated = 1;
+                if (!get_value(expr, &sval))
+                        return;
+                snprintf(tmp, 25, "%s", sval_to_numstr(sval));
+                append(buf, tmp, len);
+                return;
+        }
         case EXPR_STRING:
                 append(buf, "\"", len);
                 if (expr->string)
                         append(buf, expr->string->data, len);
                 append(buf, "\"", len);

@@ -1064,10 +1075,26 @@
         if (!sym)
                 return -1;
         return get_param_num_from_sym(sym);
 }
 
+struct symbol *get_param_sym_from_num(int num)
+{
+        struct symbol *sym;
+        int i;
+
+        if (!cur_func_sym)
+                return NULL;
+
+        i = 0;
+        FOR_EACH_PTR(cur_func_sym->ctype.base_type->arguments, sym) {
+                if (i++ == num)
+                        return sym;
+        } END_FOR_EACH_PTR(sym);
+        return NULL;
+}
+
 int ms_since(struct timeval *start)
 {
         struct timeval end;
         double diff;