bug78502.phpt 747 B

12345678910111213141516171819202122232425262728293031
  1. --TEST--
  2. Bug #78502: Incorrect stack size calculation for indirectly recursive function call
  3. --FILE--
  4. <?php
  5. $tree = [
  6. 'name' => 'a',
  7. 'quant' => 1,
  8. 'children' => [
  9. ['name' => 'b', 'quant' => 1],
  10. ['name' => 'c', 'quant' => 1, 'children' => [
  11. ['name' => 'd', 'quant' => 1],
  12. ]],
  13. ],
  14. ];
  15. function tree_map($tree, $recursive_attr, closure $callback){
  16. if(isset($tree[$recursive_attr])){
  17. $tree[$recursive_attr] = array_map(function($c) use($recursive_attr, $callback){
  18. return tree_map($c, $recursive_attr, $callback);
  19. }, $tree[$recursive_attr]);
  20. }
  21. return $callback($tree);
  22. }
  23. tree_map($tree, 'children', function ($node) {});
  24. ?>
  25. ===DONE===
  26. --EXPECT--
  27. ===DONE===