tweaked previous merge (no need to duplicate visitors, handlers and the expression...
authorFabien Potencier <fabien.potencier@gmail.com>
Tue, 24 Jan 2012 18:12:39 +0000 (19:12 +0100)
committerFabien Potencier <fabien.potencier@gmail.com>
Tue, 24 Jan 2012 18:12:39 +0000 (19:12 +0100)
lib/Twig/Parser.php

index 4b85259..72d3637 100644 (file)
@@ -64,17 +64,21 @@ class Twig_Parser implements Twig_ParserInterface
     {
         // push all variables into the stack to keep the current state of the parser
         $vars = get_object_vars($this);
-        unset($vars['stack'], $vars['env']);
+        unset($vars['stack'], $vars['env'], $vars['handlers'], $vars['visitors'], $vars['expressionParser']);
         $this->stack[] = $vars;
 
         $this->tmpVarCount = 0;
 
         // tag handlers
-        $this->handlers = $this->env->getTokenParsers();
-        $this->handlers->setParser($this);
+        if (null === $this->handlers) {
+            $this->handlers = $this->env->getTokenParsers();
+            $this->handlers->setParser($this);
+        }
 
         // node visitors
-        $this->visitors = $this->env->getNodeVisitors();
+        if (null === $this->visitors) {
+            $this->visitors = $this->env->getNodeVisitors();
+        }
 
         if (null === $this->expressionParser) {
             $this->expressionParser = new Twig_ExpressionParser($this, $this->env->getUnaryOperators(), $this->env->getBinaryOperators());