diff options
| -rw-r--r-- | ext/opcache/tests/bug78189.phpt | 22 | ||||
| -rw-r--r-- | ext/opcache/zend_file_cache.c | 2 |
2 files changed, 23 insertions, 1 deletions
diff --git a/ext/opcache/tests/bug78189.phpt b/ext/opcache/tests/bug78189.phpt new file mode 100644 index 0000000000..49891c8d63 --- /dev/null +++ b/ext/opcache/tests/bug78189.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #78189 (file cache strips last character of uname hash) +--SKIPIF-- +<?php +if (!extension_loaded('Zend OPcache')) die('skip opcache extension not available'); +if (substr(PHP_OS, 0, 3) !== 'WIN') die('skip this test is for Windows platforms only'); +?> +--INI-- +opcache.enable_cli=1 +opcache.optimization_level=-1 +opcache.file_cache={TMP} +opcache.file_cache_only=1 +--FILE-- +<?php +$tmpdir = sys_get_temp_dir(); +$pattern = $tmpdir . '/*/*/' . str_replace(':', '', __DIR__) . '/bug78189.php.bin'; +foreach (glob($pattern) as $filename) { + var_dump(preg_match('~/[0-9a-f]{32}/~', substr($filename, strlen($tmpdir), 34))); +} +?> +--EXPECT-- +int(1) diff --git a/ext/opcache/zend_file_cache.c b/ext/opcache/zend_file_cache.c index 231affedf3..31f7e20cd6 100644 --- a/ext/opcache/zend_file_cache.c +++ b/ext/opcache/zend_file_cache.c @@ -856,7 +856,7 @@ static char *zend_file_cache_get_bin_file_path(zend_string *script_path) memcpy(filename, ZCG(accel_directives).file_cache, len); filename[len] = '\\'; memcpy(filename + 1 + len, md5uname, 32); - len += 32; + len += 1 + 32; filename[len] = '\\'; memcpy(filename + len + 1, accel_system_id, 32); |
