metasm/decode.rb in metasm-1.0.2 vs metasm/decode.rb in metasm-1.0.3
- old
+ new
@@ -61,27 +61,28 @@
def externals
@target.externals
end
- def match_rec(target, vars)
- return false if not target.kind_of? Indirection
- t = target.target
- if vars[t]
- return false if @target != vars[t]
- elsif vars.has_key? t
- vars[t] = @target
- elsif t.kind_of? ExpressionType
- return false if not @target.match_rec(t, vars)
+ def match_rec(pattern, vars)
+ return false if not pattern.kind_of? Indirection
+ pt = pattern.target
+ if vars[pt]
+ return false if @target != vars[pt]
+ elsif vars.has_key? pt
+ vars[pt] = @target
+ elsif pt.kind_of? ExpressionType
+ return false if not @target.match_rec(pt, vars)
else
- return false if targ != @target
+ return false if pt != @target
end
- if vars[target.len]
- return false if @len != vars[target.len]
- elsif vars.has_key? target.len
- vars[target.len] = @len
+ pl = pattern.len
+ if vars[pl]
+ return false if @len != vars[pl]
+ elsif vars.has_key? pl
+ vars[pl] = @len
else
- return false if target.len != @len
+ return false if pl != @len
end
vars
end
end