From 110daa81c3b11ec102daf4ee634e2f3d2e9c5f36 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Thu, 8 Dec 2022 21:08:38 +0100 Subject: Portability improvements for PHP8.2 --- src/sp_execute.c | 18 +++++++++++++++--- src/sp_utils.c | 2 +- src/tests/dump_request/dump_eval_blacklist.phpt | 8 +++++--- src/tests/dump_request/dump_eval_whitelist.phpt | 8 +++++--- src/tests/dump_request/dump_request.phpt | 8 +++++--- src/tests/dump_request/dump_request_stacktrace.phpt | 8 +++++--- src/tests/dump_request/dump_request_too_big.phpt | 8 +++++--- 7 files changed, 41 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/sp_execute.c b/src/sp_execute.c index 5c0c939..84f6275 100644 --- a/src/sp_execute.c +++ b/src/sp_execute.c @@ -336,7 +336,11 @@ static zend_result sp_stream_open(zend_file_handle *handle) { ZEND_API zend_op_array* (*orig_zend_compile_file)(zend_file_handle* file_handle, int type) = NULL; -#if PHP_VERSION_ID >= 80000 +#if PHP_VERSION_ID >= 82000 +ZEND_API zend_op_array* (*orig_zend_compile_string)( + zend_string* source_string, const char* filename, + enum _zend_compile_position position) = NULL; +#elif PHP_VERSION_ID >= 80000 ZEND_API zend_op_array* (*orig_zend_compile_string)( zend_string* source_string, const char* filename) = NULL; #else @@ -344,7 +348,11 @@ ZEND_API zend_op_array* (*orig_zend_compile_string)(zval* source_string, char* filename) = NULL; #endif -#if PHP_VERSION_ID >= 80000 +#if PHP_VERSION_ID >= 82000 +ZEND_API zend_op_array* sp_compile_string(zend_string* source_string, + const char* filename, + enum _zend_compile_position position) { +#elif PHP_VERSION_ID >= 80000 ZEND_API zend_op_array* sp_compile_string(zend_string* source_string, const char* filename) { #else @@ -352,7 +360,11 @@ ZEND_API zend_op_array* sp_compile_string(zval* source_string, char* filename) { #endif // TODO(jvoisin) handle recursive calls to `eval` SPG(eval_source_string) = source_string; - zend_op_array* opline = orig_zend_compile_string(source_string, filename); + zend_op_array* opline = orig_zend_compile_string(source_string, filename +#if PHP_VERSION_ID >= 82000 + , position +#endif + ); if (SPCFG(sloppy).enable) { sp_sloppy_modify_opcode(opline); } diff --git a/src/sp_utils.c b/src/sp_utils.c index 42f7871..3107f77 100644 --- a/src/sp_utils.c +++ b/src/sp_utils.c @@ -473,7 +473,7 @@ void unhook_functions(HashTable *ht) { func->internal_function.handler = orig_handler; } (void)idx;//silence a -Wunused-but-set-variable - ZEND_HASH_FOREACH_END_DEL(); + ZEND_HASH_FOREACH_END(); } bool check_is_in_eval_whitelist(const char* function_name) { diff --git a/src/tests/dump_request/dump_eval_blacklist.phpt b/src/tests/dump_request/dump_eval_blacklist.phpt index a8c1618..e294703 100644 --- a/src/tests/dump_request/dump_eval_blacklist.phpt +++ b/src/tests/dump_request/dump_eval_blacklist.phpt @@ -6,10 +6,12 @@ if (!extension_loaded("snuffleupagus")) print "skip"; ?> --CLEAN-- --POST-- post_a=data_post_a&post_b=data_post_b diff --git a/src/tests/dump_request/dump_eval_whitelist.phpt b/src/tests/dump_request/dump_eval_whitelist.phpt index cc5a824..7385146 100644 --- a/src/tests/dump_request/dump_eval_whitelist.phpt +++ b/src/tests/dump_request/dump_eval_whitelist.phpt @@ -6,10 +6,12 @@ if (!extension_loaded("snuffleupagus")) print "skip"; ?> --CLEAN-- --POST-- post_a=data_post_a&post_b=data_post_b diff --git a/src/tests/dump_request/dump_request.phpt b/src/tests/dump_request/dump_request.phpt index f8dee11..e955776 100644 --- a/src/tests/dump_request/dump_request.phpt +++ b/src/tests/dump_request/dump_request.phpt @@ -8,10 +8,12 @@ if (!extension_loaded("snuffleupagus")) { ?> --CLEAN-- --POST-- post_a=data_post_a&post_b=data_post_b diff --git a/src/tests/dump_request/dump_request_stacktrace.phpt b/src/tests/dump_request/dump_request_stacktrace.phpt index 9b02ab5..9f85044 100644 --- a/src/tests/dump_request/dump_request_stacktrace.phpt +++ b/src/tests/dump_request/dump_request_stacktrace.phpt @@ -8,10 +8,12 @@ if (!extension_loaded("snuffleupagus")) { ?> --CLEAN-- --POST-- post_a=data_post_a&post_b=data_post_b diff --git a/src/tests/dump_request/dump_request_too_big.phpt b/src/tests/dump_request/dump_request_too_big.phpt index fd265f2..4fc8f81 100644 --- a/src/tests/dump_request/dump_request_too_big.phpt +++ b/src/tests/dump_request/dump_request_too_big.phpt @@ -8,10 +8,12 @@ if (!extension_loaded("snuffleupagus")) { ?> --CLEAN-- --POST-- post_a=data_post_a&post_b=data_post_b&post_c=c -- cgit v1.3