diff options
-rwxr-xr-x | Zend/tests/bug31102.phpt | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/Zend/tests/bug31102.phpt b/Zend/tests/bug31102.phpt new file mode 100755 index 0000000000..7dd841dd53 --- /dev/null +++ b/Zend/tests/bug31102.phpt @@ -0,0 +1,48 @@ +--TEST-- +Bug #31102 () +--FILE-- +<?php + +$test = 0; + +function __autoload($class) +{ + global $test; + + echo __METHOD__ . "($class,$test)\n"; + switch($test) + { + case 1: + eval("class $class { function __construct(){throw new Exception('$class::__construct');}}"); + return; + case 2: + eval("class $class { function __construct(){throw new Exception('$class::__construct');}}"); + throw new Exception(__METHOD__); + return; + case 3: + return; + } +} + +while($test++ < 5) +{ + try + { + eval("\$bug = new Test$test();"); + } + catch (Exception $e) + { + echo "Caught: " . $e->getMessage() . "\n"; + } +} +?> +===DONE=== +<?php exit(0); ?> +--EXPECTF-- +__autoload(Test1,1) +Caught: Test1::__construct +__autoload(Test2,2) +Caught: __autoload +__autoload(Test3,3) + +Fatal error: Class 'Test3' not found in %sbug31102.php(%d) : eval()'d code on line 1 |