bug45805.phpt 990 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. --TEST--
  2. Bug #45805 (Crash on throwing exception from error handler)
  3. --FILE--
  4. <?php
  5. class PHPUnit_Util_ErrorHandler
  6. {
  7. public static function handleError($errno, $errstr, $errfile, $errline)
  8. {
  9. throw new RuntimeException;
  10. }
  11. }
  12. class A {
  13. public function getX() {
  14. return NULL;
  15. }
  16. }
  17. class B {
  18. public function foo() {
  19. $obj = new A;
  20. $source = &$obj->getX();
  21. }
  22. public function bar() {
  23. $m = new ReflectionMethod('B', 'foo');
  24. $m->invoke($this);
  25. }
  26. }
  27. set_error_handler(
  28. array('PHPUnit_Util_ErrorHandler', 'handleError'), E_ALL
  29. );
  30. $o = new B;
  31. $o->bar();
  32. ?>
  33. --EXPECTF--
  34. Fatal error: Uncaught RuntimeException in %sbug45805.php:%d
  35. Stack trace:
  36. #0 %sbug45805.php(%d): PHPUnit_Util_ErrorHandler::handleError(8, 'Only variables ...', '%s', %d)
  37. #1 [internal function]: B->foo()
  38. #2 %sbug45805.php(%d): ReflectionMethod->invoke(Object(B))
  39. #3 %sbug45805.php(%d): B->bar()
  40. #4 {main}
  41. thrown in %sbug45805.php on line %d