summaryrefslogtreecommitdiffstats
path: root/apcu-php81.patch
diff options
context:
space:
mode:
Diffstat (limited to 'apcu-php81.patch')
-rw-r--r--apcu-php81.patch310
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
+