From e7b4f516846d1c5ba7937ad8213351cb8ebea2d9 Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Mon, 28 Jan 2013 09:23:19 +0300 Subject: [PATCH] buf_size: don't call get_expression_value() get_expression_value() changes the expression you pass to it so it cannot be reused. Call get_implied_value() instead. Signed-off-by: Dan Carpenter --- smatch_buf_size.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/smatch_buf_size.c b/smatch_buf_size.c index 6b374f4d..8a406b2b 100644 --- a/smatch_buf_size.c +++ b/smatch_buf_size.c @@ -190,7 +190,7 @@ static void db_returns_buf_size(struct expression *expr, int param, char *unused static int get_real_array_size(struct expression *expr) { struct symbol *type; - int ret; + sval_t sval; if (expr->type == EXPR_BINOP) /* array elements foo[5] */ return 0; @@ -199,15 +199,14 @@ static int get_real_array_size(struct expression *expr) if (!type || type->type != SYM_ARRAY) return 0; - ret = get_expression_value(type->array_size); - /* Dynamically sized array are -1 in sparse */ - if (ret <= 0) + if (!get_implied_value(type->array_size, &sval)) return 0; + /* People put one element arrays on the end of structs */ - if (ret == 1) + if (sval.value == 1) return 0; - return ret; + return sval.value; } static int get_size_from_initializer(struct expression *expr) -- 2.11.4.GIT