From 04cf2d50b6caad0c6453bc3b2893ca03b6068463 Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Wed, 13 Jun 2012 13:44:02 +0300 Subject: [PATCH] buf_size: separate bytes_per_element() into its own function Signed-off-by: Dan Carpenter --- smatch_buf_size.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/smatch_buf_size.c b/smatch_buf_size.c index 006a100c..dcdb9cd1 100644 --- a/smatch_buf_size.c +++ b/smatch_buf_size.c @@ -55,29 +55,40 @@ void set_param_buf_size(const char *name, struct symbol *sym, char *key, char *v set_state(my_size_id, fullname, sym, alloc_state_num(size)); } -static int bytes_to_elements(struct expression *expr, int bytes) +static int bytes_per_element(struct expression *expr) { struct symbol *type; - int bytes_per_element; + int bpe; type = get_type(expr); if (!type) return 0; if (type->type == SYM_PTR) { type = get_base_type(type); - bytes_per_element = bits_to_bytes(type->bit_size); + bpe = bits_to_bytes(type->bit_size); } else if (type->type == SYM_ARRAY) { - bytes_per_element = type->ctype.alignment; + bpe = type->ctype.alignment; } else { return 0; } - if (bytes_per_element == 0) + if (bpe == 0) + return 0; + if (bpe == -1) /* void pointer */ + bpe = 1; + + return bpe; +} + +static int bytes_to_elements(struct expression *expr, int bytes) +{ + int bpe; + + bpe = bytes_per_element(expr); + if (bpe == 0) return 0; - if (bytes_per_element == -1) /* void pointer */ - bytes_per_element = 1; + return bytes / bpe; - return bytes / bytes_per_element; } static int get_initializer_size(struct expression *expr) -- 2.11.4.GIT