From 0e35e0bbf81cdbb5346fcdc0a52e022b55075e58 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Thu, 9 Sep 2021 11:59:22 +0200 Subject: [PATCH 1/3] Fix iterator prototypes for PHP 8.1 --- gnupg_keylistiterator.c | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/gnupg_keylistiterator.c b/gnupg_keylistiterator.c index 215aaa0..7390edd 100644 --- a/gnupg_keylistiterator.c +++ b/gnupg_keylistiterator.c @@ -90,14 +90,40 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_gnupg_void_iterator_method, 0, 0, 0) ZEND_END_ARG_INFO() /* }}} */ +#if PHP_VERSION_ID < 80100 + +#define arginfo_gnupg_current arginfo_gnupg_void_iterator_method +#define arginfo_gnupg_key arginfo_gnupg_void_iterator_method +#define arginfo_gnupg_valid arginfo_gnupg_void_iterator_method +#define arginfo_gnupg_next arginfo_gnupg_void_iterator_method +#define arginfo_gnupg_rewind arginfo_gnupg_void_iterator_method + +#else + +ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_gnupg_current, 0, 0, IS_MIXED, 0) +ZEND_END_ARG_INFO() + +#define arginfo_gnupg_key arginfo_gnupg_current + +ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_gnupg_valid, 0, 0, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_gnupg_next, 0, 0, IS_VOID, 0) +ZEND_END_ARG_INFO() + +#define arginfo_gnupg_rewind arginfo_gnupg_next + +#endif + + /* {{{ method list gnupg_keylistiterator */ static zend_function_entry gnupg_keylistiterator_methods[] = { PHP_ME(gnupg_keylistiterator, __construct, arginfo_gnupg_void_iterator_method, ZEND_ACC_PUBLIC) - PHP_ME(gnupg_keylistiterator, current, arginfo_gnupg_void_iterator_method, ZEND_ACC_PUBLIC) - PHP_ME(gnupg_keylistiterator, key, arginfo_gnupg_void_iterator_method, ZEND_ACC_PUBLIC) - PHP_ME(gnupg_keylistiterator, next, arginfo_gnupg_void_iterator_method, ZEND_ACC_PUBLIC) - PHP_ME(gnupg_keylistiterator, rewind, arginfo_gnupg_void_iterator_method, ZEND_ACC_PUBLIC) - PHP_ME(gnupg_keylistiterator, valid, arginfo_gnupg_void_iterator_method, ZEND_ACC_PUBLIC) + PHP_ME(gnupg_keylistiterator, current, arginfo_gnupg_current, ZEND_ACC_PUBLIC) + PHP_ME(gnupg_keylistiterator, key, arginfo_gnupg_key, ZEND_ACC_PUBLIC) + PHP_ME(gnupg_keylistiterator, next, arginfo_gnupg_next, ZEND_ACC_PUBLIC) + PHP_ME(gnupg_keylistiterator, rewind, arginfo_gnupg_rewind, ZEND_ACC_PUBLIC) + PHP_ME(gnupg_keylistiterator, valid, arginfo_gnupg_valid, ZEND_ACC_PUBLIC) PHPC_FE_END }; /* }}} */ -- 2.31.1 From 512acab50beb1b375ef5621b27e1466efb010e58 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Thu, 9 Sep 2021 12:46:48 +0200 Subject: [PATCH 2/3] Simplify previous --- gnupg_keylistiterator.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/gnupg_keylistiterator.c b/gnupg_keylistiterator.c index 7390edd..4d3c074 100644 --- a/gnupg_keylistiterator.c +++ b/gnupg_keylistiterator.c @@ -90,15 +90,10 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_gnupg_void_iterator_method, 0, 0, 0) ZEND_END_ARG_INFO() /* }}} */ -#if PHP_VERSION_ID < 80100 - -#define arginfo_gnupg_current arginfo_gnupg_void_iterator_method -#define arginfo_gnupg_key arginfo_gnupg_void_iterator_method -#define arginfo_gnupg_valid arginfo_gnupg_void_iterator_method -#define arginfo_gnupg_next arginfo_gnupg_void_iterator_method -#define arginfo_gnupg_rewind arginfo_gnupg_void_iterator_method - -#else +#ifndef ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX +#define ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, type, allow_null) \ + ZEND_BEGIN_ARG_INFO_EX(name, 0, return_reference, required_num_args) +#endif ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_gnupg_current, 0, 0, IS_MIXED, 0) ZEND_END_ARG_INFO() @@ -113,8 +108,6 @@ ZEND_END_ARG_INFO() #define arginfo_gnupg_rewind arginfo_gnupg_next -#endif - /* {{{ method list gnupg_keylistiterator */ static zend_function_entry gnupg_keylistiterator_methods[] = { -- 2.31.1 From 6ebd34017e920c6e25878ba43d77d08c426f804e Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Thu, 9 Sep 2021 13:36:44 +0200 Subject: [PATCH 3/3] use ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX from phpc --- gnupg_keylistiterator.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/gnupg_keylistiterator.c b/gnupg_keylistiterator.c index 4d3c074..9b285ee 100644 --- a/gnupg_keylistiterator.c +++ b/gnupg_keylistiterator.c @@ -90,11 +90,6 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_gnupg_void_iterator_method, 0, 0, 0) ZEND_END_ARG_INFO() /* }}} */ -#ifndef ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX -#define ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, type, allow_null) \ - ZEND_BEGIN_ARG_INFO_EX(name, 0, return_reference, required_num_args) -#endif - ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_gnupg_current, 0, 0, IS_MIXED, 0) ZEND_END_ARG_INFO() -- 2.31.1 From e9e2769c852ac5d6755245387755c589379a1e1c Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Thu, 9 Sep 2021 13:34:59 +0200 Subject: [PATCH] define ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX for php < 8.1 --- phpc.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/phpc.h b/phpc.h index 4b55747..70fb317 100644 --- a/phpc/phpc.h +++ b/phpc/phpc.h @@ -51,6 +51,12 @@ memcpy(&PHPC_OBJ_GET_HANDLER_VAR_NAME(_name), \ zend_get_std_object_handlers(), sizeof(zend_object_handlers)) +/* for arginfo */ +#ifndef ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX +#define ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, type, allow_null) \ + ZEND_BEGIN_ARG_INFO_EX(name, 0, return_reference, required_num_args) +#endif + /* ZEND_ACC_CTOR and ZEND_ACC_DTOR is removed in 7.4 */ #ifndef ZEND_ACC_CTOR #define ZEND_ACC_CTOR 0 -- 2.31.1