diff --git a/lib/Twig/Parser.php b/lib/Twig/Parser.php index ed28a0e6a3..4628d67dfc 100644 --- a/lib/Twig/Parser.php +++ b/lib/Twig/Parser.php @@ -63,7 +63,12 @@ public function getFilename() public function parse(Twig_TokenStream $stream, $test = null, $dropNeedle = false) { // push all variables into the stack to keep the current state of the parser - $vars = get_object_vars($this); + // using get_object_vars() instead of foreach would lead to https://bugs.php.net/71336 + $vars = array(); + foreach ($this as $k => $v) { + $vars[$k] = $v; + } + unset($vars['stack'], $vars['env'], $vars['handlers'], $vars['visitors'], $vars['expressionParser'], $vars['reservedMacroNames']); $this->stack[] = $vars; diff --git a/test/Twig/Tests/Fixtures/tags/embed/with_extends.test b/test/Twig/Tests/Fixtures/tags/embed/with_extends.test index cf7953d3ef..2c1dd584cb 100644 --- a/test/Twig/Tests/Fixtures/tags/embed/with_extends.test +++ b/test/Twig/Tests/Fixtures/tags/embed/with_extends.test @@ -17,6 +17,7 @@ block1extended {% endblock %} {% endembed %} + {{ parent() }} {% endblock %} --TEMPLATE(base.twig)-- A @@ -54,4 +55,6 @@ A block1extended B block2 -CB \ No newline at end of file +C blockc2base + +B \ No newline at end of file