summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xZend/tests/bug31102.phpt48
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