summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apcu-php81.patch184
-rw-r--r--php-pecl-apcu.spec5
2 files changed, 188 insertions, 1 deletions
diff --git a/apcu-php81.patch b/apcu-php81.patch
index 8abf332..63ce162 100644
--- a/apcu-php81.patch
+++ b/apcu-php81.patch
@@ -308,3 +308,187 @@ index 8959a44..56f7e10 100644
--FILE--
<?php
+From ddc5a8b86f88495aa2da1e9df2f6d187c420c3c1 Mon Sep 17 00:00:00 2001
+From: Nikita Popov <nikita.ppv@gmail.com>
+Date: Wed, 21 Jul 2021 14:10:49 +0200
+Subject: [PATCH] Add return types to APCUIterator
+
+For compatibility with tentative types added in PHP 8.1.
+---
+ apc_iterator.c | 10 ++++------
+ apc_iterator.stub.php | 24 ++++++++---------------
+ apc_iterator_arginfo.h | 20 +++++++++++--------
+ apc_iterator_legacy_arginfo.h | 2 +-
+ tests/iterator_011.phpt | 37 +++++++++++++++++++++++++++++++++++
+ 5 files changed, 62 insertions(+), 31 deletions(-)
+ create mode 100644 tests/iterator_011.phpt
+
+diff --git a/apc_iterator.c b/apc_iterator.c
+index 712b59b..a268718 100644
+--- a/apc_iterator.c
++++ b/apc_iterator.c
+@@ -429,7 +429,8 @@ PHP_METHOD(APCUIterator, current) {
+
+ if (apc_stack_size(iterator->stack) == iterator->stack_idx) {
+ if (iterator->fetch(iterator) == 0) {
+- RETURN_FALSE;
++ zend_throw_error(NULL, "Cannot call current() on invalid iterator");
++ return;
+ }
+ }
+
+@@ -446,13 +447,10 @@ PHP_METHOD(APCUIterator, key) {
+ }
+
+ ENSURE_INITIALIZED(iterator);
+- if (apc_stack_size(iterator->stack) == 0) {
+- RETURN_FALSE;
+- }
+-
+ if (apc_stack_size(iterator->stack) == iterator->stack_idx) {
+ if (iterator->fetch(iterator) == 0) {
+- RETURN_FALSE;
++ zend_throw_error(NULL, "Cannot call key() on invalid iterator");
++ return;
+ }
+ }
+
+diff --git a/apc_iterator.stub.php b/apc_iterator.stub.php
+index 95b8ce3..11b981c 100644
+--- a/apc_iterator.stub.php
++++ b/apc_iterator.stub.php
+@@ -13,27 +13,19 @@ public function __construct(
+ int $chunk_size = 0,
+ int $list = APC_LIST_ACTIVE);
+
+- /** @return void */
+- public function rewind();
++ public function rewind(): void;
+
+- /** @return void */
+- public function next();
++ public function next(): void;
+
+- /** @return bool */
+- public function valid();
++ public function valid(): bool;
+
+- /** @return string|int|false */
+- public function key();
++ public function key(): string|int;
+
+- /** @return mixed */
+- public function current();
++ public function current(): mixed;
+
+- /** @return int */
+- public function getTotalHits();
++ public function getTotalHits(): int;
+
+- /** @return int */
+- public function getTotalSize();
++ public function getTotalSize(): int;
+
+- /** @return int */
+- public function getTotalCount();
++ public function getTotalCount(): int;
+ }
+diff --git a/apc_iterator_arginfo.h b/apc_iterator_arginfo.h
+index 3c0ffb1..f1b8eb7 100644
+--- a/apc_iterator_arginfo.h
++++ b/apc_iterator_arginfo.h
+@@ -1,5 +1,5 @@
+ /* This is a generated file, edit the .stub.php file instead.
+- * Stub hash: bb3222265846a53027ddd5c8da8106de9af8b0d5 */
++ * Stub hash: e8a5a86d5bb9209117834ed0071130889e769c34 */
+
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_APCUIterator___construct, 0, 0, 0)
+ ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, search, "null")
+@@ -8,22 +8,26 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_APCUIterator___construct, 0, 0, 0)
+ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, list, IS_LONG, 0, "APC_LIST_ACTIVE")
+ ZEND_END_ARG_INFO()
+
+-ZEND_BEGIN_ARG_INFO_EX(arginfo_class_APCUIterator_rewind, 0, 0, 0)
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_APCUIterator_rewind, 0, 0, IS_VOID, 0)
+ ZEND_END_ARG_INFO()
+
+ #define arginfo_class_APCUIterator_next arginfo_class_APCUIterator_rewind
+
+-#define arginfo_class_APCUIterator_valid arginfo_class_APCUIterator_rewind
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_APCUIterator_valid, 0, 0, _IS_BOOL, 0)
++ZEND_END_ARG_INFO()
+
+-#define arginfo_class_APCUIterator_key arginfo_class_APCUIterator_rewind
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_class_APCUIterator_key, 0, 0, MAY_BE_STRING|MAY_BE_LONG)
++ZEND_END_ARG_INFO()
+
+-#define arginfo_class_APCUIterator_current arginfo_class_APCUIterator_rewind
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_APCUIterator_current, 0, 0, IS_MIXED, 0)
++ZEND_END_ARG_INFO()
+
+-#define arginfo_class_APCUIterator_getTotalHits arginfo_class_APCUIterator_rewind
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_APCUIterator_getTotalHits, 0, 0, IS_LONG, 0)
++ZEND_END_ARG_INFO()
+
+-#define arginfo_class_APCUIterator_getTotalSize arginfo_class_APCUIterator_rewind
++#define arginfo_class_APCUIterator_getTotalSize arginfo_class_APCUIterator_getTotalHits
+
+-#define arginfo_class_APCUIterator_getTotalCount arginfo_class_APCUIterator_rewind
++#define arginfo_class_APCUIterator_getTotalCount arginfo_class_APCUIterator_getTotalHits
+
+
+ ZEND_METHOD(APCUIterator, __construct);
+diff --git a/apc_iterator_legacy_arginfo.h b/apc_iterator_legacy_arginfo.h
+index 4ddb156..4dc1fd7 100644
+--- a/apc_iterator_legacy_arginfo.h
++++ b/apc_iterator_legacy_arginfo.h
+@@ -1,5 +1,5 @@
+ /* This is a generated file, edit the .stub.php file instead.
+- * Stub hash: bb3222265846a53027ddd5c8da8106de9af8b0d5 */
++ * Stub hash: e8a5a86d5bb9209117834ed0071130889e769c34 */
+
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_APCUIterator___construct, 0, 0, 0)
+ ZEND_ARG_INFO(0, search)
+diff --git a/tests/iterator_011.phpt b/tests/iterator_011.phpt
+new file mode 100644
+index 0000000..3d2d3f2
+--- /dev/null
++++ b/tests/iterator_011.phpt
+@@ -0,0 +1,37 @@
++--TEST--
++APCUIterator key() and current() on invalid iterator
++--SKIPIF--
++<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
++--INI--
++apc.enabled=1
++apc.enable_cli=1
++--FILE--
++<?php
++
++apcu_store("key1", "value1");
++
++$it = new APCuIterator(null, APC_ITER_VALUE);
++var_dump($it->key());
++var_dump($it->current());
++$it->next();
++
++try {
++ var_dump($it->key());
++} catch (Error $e) {
++ echo $e->getMessage(), "\n";
++}
++try {
++ var_dump($it->current());
++} catch (Error $e) {
++ echo $e->getMessage(), "\n";
++}
++
++?>
++--EXPECT--
++string(4) "key1"
++array(1) {
++ ["value"]=>
++ string(6) "value1"
++}
++Cannot call key() on invalid iterator
++Cannot call current() on invalid iterator
diff --git a/php-pecl-apcu.spec b/php-pecl-apcu.spec
index eea74d7..1db3958 100644
--- a/php-pecl-apcu.spec
+++ b/php-pecl-apcu.spec
@@ -36,7 +36,7 @@ URL: https://pecl.php.net/package/APCu
Release: 0.8.%{gh_date}git%{gh_short}%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
Source0: https://github.com/%{gh_owner}/%{gh_project}/archive/%{gh_commit}/%{pecl_name}-%{version}-%{gh_short}.tar.gz
%else
-Release: 3%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
+Release: 4%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
Source0: https://pecl.php.net/get/%{pecl_name}-%{version}.tgz
%endif
Source1: %{pecl_name}-5.1.19.ini
@@ -327,6 +327,9 @@ fi
%changelog
+* Fri Jul 23 2021 Remi Collet <remi@remirepo.net> - 5.1.20-4
+- add upstream patch for PHP 8.1.0beta1
+
* Wed Jul 7 2021 Remi Collet <remi@remirepo.net> - 5.1.20-3
- add upstream patch for test suite with PHP 8.1