spl_autoload_bug48541.phpt 658 B

12345678910111213141516171819202122232425262728293031323334353637
  1. --TEST--
  2. SPL: spl_autoload_register() Bug #48541: registering multiple closures fails with memleaks
  3. --FILE--
  4. <?php
  5. class X {
  6. public function getClosure() {
  7. return function($class) {
  8. echo "a2 called\n";
  9. };
  10. }
  11. }
  12. $a = function ($class) {
  13. echo "a called\n";
  14. };
  15. $x = new X;
  16. $a2 = $x->getClosure();
  17. $b = function ($class) {
  18. eval('class ' . $class . '{function __construct(){echo "foo\n";}}');
  19. echo "b called\n";
  20. };
  21. spl_autoload_register($a);
  22. spl_autoload_register($a2);
  23. spl_autoload_register($b);
  24. $c = $a;
  25. $c2 = $a2;
  26. spl_autoload_register($c);
  27. spl_autoload_register($c2);
  28. $c = new foo;
  29. ?>
  30. --EXPECT--
  31. a called
  32. a2 called
  33. b called
  34. foo