summaryrefslogtreecommitdiff
path: root/Zend/tests/bug38779_1.phpt
diff options
context:
space:
mode:
authorAntony Dovgal <tony2001@php.net>2006-09-11 14:13:25 +0000
committerAntony Dovgal <tony2001@php.net>2006-09-11 14:13:25 +0000
commit5a9f40a46aa743f1a90503fc7d2fe82b1de3c724 (patch)
treea019674b8a4e99c95b9bac970258e026ff44423a /Zend/tests/bug38779_1.phpt
parent65c046b200ef124e327582f50f31a79c77ed27bf (diff)
downloadphp-git-5a9f40a46aa743f1a90503fc7d2fe82b1de3c724.tar.gz
add tests
Diffstat (limited to 'Zend/tests/bug38779_1.phpt')
-rw-r--r--Zend/tests/bug38779_1.phpt45
1 files changed, 45 insertions, 0 deletions
diff --git a/Zend/tests/bug38779_1.phpt b/Zend/tests/bug38779_1.phpt
new file mode 100644
index 0000000000..a865323e8e
--- /dev/null
+++ b/Zend/tests/bug38779_1.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Bug #38779 (engine crashes when require()'ing file with syntax error through userspace stream wrapper)
+--FILE--
+<?php
+
+class Loader {
+ private $position;
+ private $data;
+ public function stream_open($path, $mode, $options, &$opened_path) {
+ $this->data = '<' . "?php \n\"\";ll l\n ?" . '>';
+ $this->position = 0;
+ return true;
+ }
+ function stream_read($count) {
+ $ret = substr($this->data, $this->position, $count);
+ $this->position += strlen($ret);
+ return $ret;
+ }
+ function stream_eof() {
+ return $this->position >= strlen($this->data);
+ }
+ function stream_flush() {
+ @unlink(dirname(__FILE__)."/bug38779.txt");
+ var_dump("flush!");
+ }
+ function stream_close() {
+ var_dump("close!");
+ }
+}
+stream_wrapper_register('Loader', 'Loader');
+$fp = fopen ('Loader://qqq.php', 'r');
+
+$filename = dirname(__FILE__)."/bug38779.txt";
+$fp1 = fopen($filename, "w");
+fwrite($fp1, "<"."?php blah blah?".">");
+fclose($fp1);
+
+include $filename;
+
+echo "Done\n";
+?>
+--EXPECTF--
+Parse error: syntax error, unexpected T_STRING in %s on line %d
+string(6) "flush!"
+string(6) "close!"