1--TEST-- 2Temporary leak with foreach 3--FILE-- 4<?php 5 6function ops() { 7 throw new Exception(); 8} 9 10$a = [new stdClass, new stdClass]; 11foreach ([$a, [new stdClass]] as $b) { 12 switch ($b[0]) { 13 case false: 14 break; 15 default: 16 try { 17 $x = 2; 18 $y = new stdClass; 19 while ($x-- && new stdClass) { 20 $r = [$x] + ($y ? ((array) $x) + [2] : ops()); 21 $y = (array) $y; 22 } 23 } catch (Exception $e) { 24 } 25 } 26} 27 28foreach ([$a, [new stdClass]] as $b) { 29 try { 30 switch ($b[0]) { 31 case false: 32 break; 33 default: 34 $x = 2; 35 $y = new stdClass; 36 while ($x-- && new stdClass) { 37 $r = [$x] + ($y ? ((array) $x) + [2] : ops()); 38 $y = (array) $y; 39 } 40 } 41 } catch (Exception $e) { 42 } 43} 44 45?> 46==DONE== 47--EXPECT-- 48==DONE== 49