Fix stack level too deep error

This commit is contained in:
Juan Broullon
2017-05-09 11:54:20 -04:00
parent 1370a102c9
commit 1707980a48
2 changed files with 17 additions and 0 deletions
+6
View File
@@ -7,6 +7,7 @@ module Liquid
# c.evaluate #=> true
#
class Condition #:nodoc:
@@depth = 0
@@operators = {
'=='.freeze => ->(cond, left, right) { cond.send(:equal_variables, left, right) },
'!='.freeze => ->(cond, left, right) { !cond.send(:equal_variables, left, right) },
@@ -47,6 +48,11 @@ module Liquid
when :or
result || @child_condition.evaluate(context)
when :and
@@depth += 1
if @@depth >= 500
@@depth = 0
raise StackLevelError, "Nesting too deep".freeze
end
result && @child_condition.evaluate(context)
else
result