diff options
author | Xinchen Hui <laruence@gmail.com> | 2017-05-17 22:42:18 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@gmail.com> | 2017-05-17 22:42:18 +0800 |
commit | e347b2ded6c9125c31e499a62c872d5cd600cae5 (patch) | |
tree | de7f6fb3f05285182f619be808f044a053cc112b | |
parent | 8a1713e39cf31f5c13839c8a6aeb784e365e1cd1 (diff) | |
download | php-git-e347b2ded6c9125c31e499a62c872d5cd600cae5.tar.gz |
Added test for bug #74596
-rw-r--r-- | ext/opcache/tests/bug74596.phpt | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/ext/opcache/tests/bug74596.phpt b/ext/opcache/tests/bug74596.phpt new file mode 100644 index 0000000000..ed1c1b4504 --- /dev/null +++ b/ext/opcache/tests/bug74596.phpt @@ -0,0 +1,55 @@ +--TEST-- +Bug #74596 (SIGSEGV with opcache.revalidate_path enabled) +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_update_protection=0 +opcache.validate_timestamps=0 +opcache.file_cache_only=0 +opcache.revalidate_path=1 +--SKIPIF-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php + +file_put_contents(__DIR__ . "/bug74596_1.php", <<<CODE +<?php +class A { + public function __construct() { + \$a = true; + if (\$a) { + echo 1 + 2; + } else { + echo 2 + 3; + } + } +} +?> +CODE +); + +file_put_contents(__DIR__ . "/bug74596_2.php", "ok\n"); + +class ufilter extends php_user_filter +{ + function filter($in, $out, &$consumed, $closing) + { + include_once __DIR__ . "/bug74596_1.php"; + while ($bucket = stream_bucket_make_writeable($in)) { + stream_bucket_append($out, $bucket); + } + return PSFS_PASS_ON; + } +} + +stream_filter_register("ufilter", "ufilter"); + +include "php://filter/read=ufilter/resource=" . __DIR__ . "/bug74596_2.php"; +?> +--CLEAN-- +<?php +unlink(__DIR__ . "/bug74596_1.php"); +unlink(__DIR__ . "/bug74596_2.php"); +?> +--EXPECT-- +ok |