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