rope_with_exception.phpt 785 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. --TEST--
  2. Exceptions thrown into a rope must not leak
  3. --FILE--
  4. <?php
  5. class Obj {
  6. function __get($x) {
  7. throw new Exception();
  8. }
  9. }
  10. try {
  11. $x = new Obj;
  12. $y = 0;
  13. $r = "$y|$x->x|";
  14. echo "should never be reached";
  15. } catch (Exception $e) {
  16. echo "$e\n";
  17. }
  18. try {
  19. $x = new Obj;
  20. $y = 0;
  21. $r = "$y$x->x|";
  22. echo "should never be reached";
  23. } catch (Exception $e) {
  24. echo "$e\n";
  25. }
  26. try {
  27. $x = new Obj;
  28. $y = 0;
  29. $r = "$y|$y$x->x";
  30. echo "should never be reached";
  31. } catch (Exception $e) {
  32. echo "$e\n";
  33. }
  34. ?>
  35. --EXPECTF--
  36. Exception in %s:%d
  37. Stack trace:
  38. #0 %s(%d): Obj->__get('x')
  39. #1 {main}
  40. Exception in %s:%d
  41. Stack trace:
  42. #0 %s(%d): Obj->__get('x')
  43. #1 {main}
  44. Exception in %s:%d
  45. Stack trace:
  46. #0 %s(%d): Obj->__get('x')
  47. #1 {main}