From a3615486de618c83b56a6505fbb508e9f7924810 Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Thu, 27 Jun 2013 13:19:53 +0300 Subject: [PATCH] comparison: introduce var_sym_eq() helper function Takes two variable names and symbol pointers and returns true if they are equal. Signed-off-by: Dan Carpenter --- smatch_comparison.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/smatch_comparison.c b/smatch_comparison.c index 5aa841a3..e62af423 100644 --- a/smatch_comparison.c +++ b/smatch_comparison.c @@ -38,6 +38,15 @@ struct compare_data { }; ALLOCATOR(compare_data, "compare data"); +int var_sym_eq(const char *a, struct symbol *a_sym, const char *b, struct symbol *b_sym) +{ + if (a_sym != b_sym) + return 0; + if (strcmp(a, b) == 0) + return 1; + return 0; +} + static struct smatch_state *alloc_compare_state( const char *var1, struct symbol *sym1, int comparison, @@ -666,7 +675,7 @@ static void copy_comparisons(struct expression *left, struct expression *right) comparison = data->comparison; var = data->var2; sym = data->sym2; - if (sym == right_sym && strcmp(var, right_var) == 0) { + if (var_sym_eq(var, sym, right_var, right_sym)) { var = data->var1; sym = data->sym1; comparison = flip_op(comparison); -- 2.11.4.GIT