diff options
Diffstat (limited to 'apcu-php81.patch')
-rw-r--r-- | apcu-php81.patch | 310 |
1 files changed, 310 insertions, 0 deletions
diff --git a/apcu-php81.patch b/apcu-php81.patch new file mode 100644 index 0000000..8abf332 --- /dev/null +++ b/apcu-php81.patch @@ -0,0 +1,310 @@ +From 3d96f1aaf6e1eae26dd637a4795f8fee95b79c02 Mon Sep 17 00:00:00 2001 +From: Nikita Popov <nikita.ppv@gmail.com> +Date: Thu, 10 Jun 2021 10:48:12 +0200 +Subject: [PATCH] Fix tests for PHP 8.1 + +--- + tests/apc_003b.phpt | 15 ++--- + tests/apc_003b_legacy.phpt | 113 +++++++++++++++++++++++++++++++++++++ + tests/apc_006_php73.phpt | 1 + + tests/apc_006_php81.phpt | 83 +++++++++++++++++++++++++++ + tests/bug76145.phpt | 1 + + 5 files changed, 206 insertions(+), 7 deletions(-) + create mode 100644 tests/apc_003b_legacy.phpt + create mode 100644 tests/apc_006_php81.phpt + +diff --git a/tests/apc_003b.phpt b/tests/apc_003b.phpt +index 18b0d20..d7a18cc 100644 +--- a/tests/apc_003b.phpt ++++ b/tests/apc_003b.phpt +@@ -2,7 +2,8 @@ + APC: apcu_store/fetch with objects + --SKIPIF-- + <?php +- require_once(dirname(__FILE__) . '/skipif.inc'); ++require_once(dirname(__FILE__) . '/skipif.inc'); ++if (PHP_VERSION_ID < 80100) die("skip For PHP >= 8.1"); + ?> + --INI-- + apc.enabled=1 +@@ -68,42 +69,42 @@ object(foo)#%d (1) { + bool(true) + } + object(baz)#%d (6) { +- ["pri":"baz":private]=> +- string(3) "baz" + ["pub"]=> + string(3) "bar" + ["pro":protected]=> + string(3) "bar" + ["pri":"bar":private]=> + string(3) "bar" ++ ["pri":"baz":private]=> ++ string(3) "baz" + ["bar"]=> + bool(true) + ["baz"]=> + bool(true) + } + object(baz)#%d (6) { +- ["pri":"baz":private]=> +- string(3) "baz" + ["pub"]=> + string(3) "bar" + ["pro":protected]=> + string(3) "bar" + ["pri":"bar":private]=> + string(3) "mod" ++ ["pri":"baz":private]=> ++ string(3) "baz" + ["bar"]=> + bool(true) + ["baz"]=> + bool(true) + } + object(baz)#%d (6) { +- ["pri":"baz":private]=> +- string(3) "baz" + ["pub"]=> + string(3) "bar" + ["pro":protected]=> + string(3) "bar" + ["pri":"bar":private]=> + string(3) "mod" ++ ["pri":"baz":private]=> ++ string(3) "baz" + ["bar"]=> + bool(true) + ["baz"]=> +diff --git a/tests/apc_003b_legacy.phpt b/tests/apc_003b_legacy.phpt +new file mode 100644 +index 0000000..ca2fa08 +--- /dev/null ++++ b/tests/apc_003b_legacy.phpt +@@ -0,0 +1,113 @@ ++--TEST-- ++APC: apcu_store/fetch with objects ++--SKIPIF-- ++<?php ++require_once(dirname(__FILE__) . '/skipif.inc'); ++if (PHP_VERSION_ID >= 80100) die("skip For PHP < 8.1"); ++?> ++--INI-- ++apc.enabled=1 ++apc.enable_cli=1 ++--FILE-- ++<?php ++ ++class foo { } ++$foo = new foo; ++var_dump($foo); ++apcu_store('foo',$foo); ++unset($foo); ++$bar = apcu_fetch('foo'); ++var_dump($bar); ++$bar->a = true; ++var_dump($bar); ++ ++class bar extends foo ++{ ++ public $pub = 'bar'; ++ protected $pro = 'bar'; ++ private $pri = 'bar'; // we don't see this, we'd need php 5.1 new serialization ++ ++ function __construct() ++ { ++ $this->bar = true; ++ } ++ ++ function change() ++ { ++ $this->pri = 'mod'; ++ } ++} ++ ++class baz extends bar ++{ ++ private $pri = 'baz'; ++ ++ function __construct() ++ { ++ parent::__construct(); ++ $this->baz = true; ++ } ++} ++ ++$baz = new baz; ++var_dump($baz); ++$baz->change(); ++var_dump($baz); ++apcu_store('baz', $baz); ++unset($baz); ++var_dump(apcu_fetch('baz')); ++ ++?> ++===DONE=== ++--EXPECTF-- ++object(foo)#%d (0) { ++} ++object(foo)#%d (0) { ++} ++object(foo)#%d (1) { ++ ["a"]=> ++ bool(true) ++} ++object(baz)#%d (6) { ++ ["pri":"baz":private]=> ++ string(3) "baz" ++ ["pub"]=> ++ string(3) "bar" ++ ["pro":protected]=> ++ string(3) "bar" ++ ["pri":"bar":private]=> ++ string(3) "bar" ++ ["bar"]=> ++ bool(true) ++ ["baz"]=> ++ bool(true) ++} ++object(baz)#%d (6) { ++ ["pri":"baz":private]=> ++ string(3) "baz" ++ ["pub"]=> ++ string(3) "bar" ++ ["pro":protected]=> ++ string(3) "bar" ++ ["pri":"bar":private]=> ++ string(3) "mod" ++ ["bar"]=> ++ bool(true) ++ ["baz"]=> ++ bool(true) ++} ++object(baz)#%d (6) { ++ ["pri":"baz":private]=> ++ string(3) "baz" ++ ["pub"]=> ++ string(3) "bar" ++ ["pro":protected]=> ++ string(3) "bar" ++ ["pri":"bar":private]=> ++ string(3) "mod" ++ ["bar"]=> ++ bool(true) ++ ["baz"]=> ++ bool(true) ++} ++===DONE=== +diff --git a/tests/apc_006_php73.phpt b/tests/apc_006_php73.phpt +index 42bdfde..adc09b9 100644 +--- a/tests/apc_006_php73.phpt ++++ b/tests/apc_006_php73.phpt +@@ -4,6 +4,7 @@ APC: apcu_store/fetch reference test + <?php + require_once(dirname(__FILE__) . '/skipif.inc'); + if (PHP_VERSION_ID < 70300) die('skip Only for PHP >= 7.3'); ++if (PHP_VERSION_ID >= 80100) die('skip Only for PHP < 8.1'); + ?> + --INI-- + apc.enabled=1 +diff --git a/tests/apc_006_php81.phpt b/tests/apc_006_php81.phpt +new file mode 100644 +index 0000000..94219dc +--- /dev/null ++++ b/tests/apc_006_php81.phpt +@@ -0,0 +1,83 @@ ++--TEST-- ++APC: apcu_store/fetch reference test ++--SKIPIF-- ++<?php ++require_once(dirname(__FILE__) . '/skipif.inc'); ++if (PHP_VERSION_ID < 80100) die('skip Only for PHP >= 8.1'); ++?> ++--INI-- ++apc.enabled=1 ++apc.enable_cli=1 ++apc.serializer=php ++report_memleaks=0 ++--FILE-- ++<?php ++ ++$a = 'a'; ++$b = array($a); ++$c = array('c'); ++$b[] = &$c; ++$b[] = &$c; ++$d = 'd'; ++$b[] = &$d; ++$b[] = &$d; ++$b[] = &$d; ++$e = 'e'; ++$b[] = $e; ++$b[] = $e; ++$f = array('f'); ++$f[] = &$f; ++$b[] = &$f; ++apcu_store('test', $b); ++$x = apcu_fetch('test'); ++debug_zval_dump($x); ++ ++?> ++===DONE=== ++--EXPECTF-- ++array(9) refcount(2){ ++ [0]=> ++ string(1) "a" interned ++ [1]=> ++ reference refcount(2) { ++ array(1) refcount(1){ ++ [0]=> ++ string(1) "c" interned ++ } ++ } ++ [2]=> ++ reference refcount(2) { ++ array(1) refcount(1){ ++ [0]=> ++ string(1) "c" interned ++ } ++ } ++ [3]=> ++ reference refcount(3) { ++ string(1) "d" interned ++ } ++ [4]=> ++ reference refcount(3) { ++ string(1) "d" interned ++ } ++ [5]=> ++ reference refcount(3) { ++ string(1) "d" interned ++ } ++ [6]=> ++ string(1) "e" interned ++ [7]=> ++ string(1) "e" interned ++ [8]=> ++ reference refcount(2) { ++ array(2) refcount(1){ ++ [0]=> ++ string(1) "f" interned ++ [1]=> ++ reference refcount(2) { ++ *RECURSION* ++ } ++ } ++ } ++} ++===DONE=== +diff --git a/tests/bug76145.phpt b/tests/bug76145.phpt +index 8959a44..56f7e10 100644 +--- a/tests/bug76145.phpt ++++ b/tests/bug76145.phpt +@@ -3,6 +3,7 @@ Bug #76145: Data corruption reading from APCu while unserializing + --INI-- + apc.enabled=1 + apc.enable_cli=1 ++error_reporting=E_ALL&~E_DEPRECATED + --FILE-- + <?php + |