From 7c7f5ae5efdeb9e5c1ad37bc487ad26ff9e085d3 Mon Sep 17 00:00:00 2001 From: Justin Collins Date: Thu, 2 Feb 2012 16:53:39 -0800 Subject: [PATCH] Better duplicate prevention in assignments in ifs so we get less "1 or 2 or 1 or 1 or 2" kind of stuff --- lib/brakeman/processors/alias_processor.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/brakeman/processors/alias_processor.rb b/lib/brakeman/processors/alias_processor.rb index 7177ad1e..5c8b5a72 100644 --- a/lib/brakeman/processors/alias_processor.rb +++ b/lib/brakeman/processors/alias_processor.rb @@ -211,10 +211,13 @@ class Brakeman::AliasProcessor < SexpProcessor # x = 1 def process_lasgn exp exp[2] = process exp[2] if sexp? exp[2] + return exp if exp[2].nil? + local = Sexp.new(:lvar, exp[1]).line(exp.line || -2) if @inside_if and val = env[local] - if val != exp[2] #avoid setting to value it already is (e.g. "1 or 1") + #avoid setting to value it already is (e.g. "1 or 1") + if val != exp[2] and val[1] != exp[2] and val[2] != exp[2] env[local] = Sexp.new(:or, val, exp[2]).line(exp.line || -2) end else -- GitLab