From 25e0f3adb619670b5ba79afcfc1c9de745586550 Mon Sep 17 00:00:00 2001 From: arshidkv12 Date: Fri, 8 May 2026 07:32:44 +0530 Subject: [PATCH 1/2] Fix PHP 8.6 compatibility --- src/php/handlers/php_heap_handlers.c | 2 +- src/php/handlers/php_map_handlers.c | 2 +- src/php/handlers/php_pair_handlers.c | 2 +- src/php/handlers/php_seq_handlers.c | 2 +- src/php/handlers/php_set_handlers.c | 2 +- src/php/objects/php_heap.h | 2 +- src/php/objects/php_map.h | 2 +- src/php/objects/php_seq.h | 2 +- src/php/objects/php_set.h | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/php/handlers/php_heap_handlers.c b/src/php/handlers/php_heap_handlers.c index 9f597c1..b7e0d87 100644 --- a/src/php/handlers/php_heap_handlers.c +++ b/src/php/handlers/php_heap_handlers.c @@ -51,7 +51,7 @@ void php_ds_register_heap_handlers() { memcpy(&php_heap_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); - php_heap_handlers.offset = XtOffsetOf(php_ds_heap_t, std); + php_heap_handlers.offset = offsetof(php_ds_heap_t, std); php_heap_handlers.dtor_obj = zend_objects_destroy_object; php_heap_handlers.free_obj = php_ds_heap_free_object; php_heap_handlers.get_gc = php_ds_heap_get_gc; diff --git a/src/php/handlers/php_map_handlers.c b/src/php/handlers/php_map_handlers.c index 563391e..816c8bf 100644 --- a/src/php/handlers/php_map_handlers.c +++ b/src/php/handlers/php_map_handlers.c @@ -109,7 +109,7 @@ void php_ds_register_map_handlers() { memcpy(&php_map_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); - php_map_handlers.offset = XtOffsetOf(php_ds_map_t, std); + php_map_handlers.offset = offsetof(php_ds_map_t, std); php_map_handlers.dtor_obj = zend_objects_destroy_object; php_map_handlers.get_gc = php_ds_map_get_gc; php_map_handlers.free_obj = php_ds_map_free_object; diff --git a/src/php/handlers/php_pair_handlers.c b/src/php/handlers/php_pair_handlers.c index 59258c4..e7b9098 100644 --- a/src/php/handlers/php_pair_handlers.c +++ b/src/php/handlers/php_pair_handlers.c @@ -26,7 +26,7 @@ void php_ds_register_pair_handlers() { memcpy(&php_pair_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); - php_pair_handlers.offset = XtOffsetOf(php_ds_pair_t, std); + php_pair_handlers.offset = offsetof(php_ds_pair_t, std); php_pair_handlers.clone_obj = php_ds_pair_clone_object; php_pair_handlers.cast_object = php_ds_default_cast_object; diff --git a/src/php/handlers/php_seq_handlers.c b/src/php/handlers/php_seq_handlers.c index 6f6ec5b..8260171 100644 --- a/src/php/handlers/php_seq_handlers.c +++ b/src/php/handlers/php_seq_handlers.c @@ -132,7 +132,7 @@ void php_ds_register_seq_handlers() { memcpy(&php_seq_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); - php_seq_handlers.offset = XtOffsetOf(php_ds_seq_t, std); + php_seq_handlers.offset = offsetof(php_ds_seq_t, std); php_seq_handlers.dtor_obj = zend_objects_destroy_object; php_seq_handlers.free_obj = php_ds_seq_free_object; diff --git a/src/php/handlers/php_set_handlers.c b/src/php/handlers/php_set_handlers.c index 1a3c192..beebd32 100644 --- a/src/php/handlers/php_set_handlers.c +++ b/src/php/handlers/php_set_handlers.c @@ -81,7 +81,7 @@ void php_ds_register_set_handlers() { memcpy(&php_ds_set_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); - php_ds_set_handlers.offset = XtOffsetOf(php_ds_set_t, std); + php_ds_set_handlers.offset = offsetof(php_ds_set_t, std); php_ds_set_handlers.cast_object = php_ds_default_cast_object; php_ds_set_handlers.clone_obj = php_ds_set_clone_obj; diff --git a/src/php/objects/php_heap.h b/src/php/objects/php_heap.h index e89c32d..02cb2c4 100644 --- a/src/php/objects/php_heap.h +++ b/src/php/objects/php_heap.h @@ -12,7 +12,7 @@ typedef struct _php_ds_heap_t { } php_ds_heap_t; static inline php_ds_heap_t *php_ds_heap_fetch_object(zend_object *obj) { - return (php_ds_heap_t *)((char*)(obj) - XtOffsetOf(php_ds_heap_t, std)); + return (php_ds_heap_t *)((char*)(obj) - offsetof(php_ds_heap_t, std)); } #define Z_DS_HEAP(z) (php_ds_heap_fetch_object(Z_OBJ(z))) diff --git a/src/php/objects/php_map.h b/src/php/objects/php_map.h index a3805b4..47d9a2f 100644 --- a/src/php/objects/php_map.h +++ b/src/php/objects/php_map.h @@ -9,7 +9,7 @@ typedef struct _php_ds_map_t { } php_ds_map_t; static inline php_ds_map_t *php_ds_map_fetch_object(zend_object *obj) { - return (php_ds_map_t *)((char*)(obj) - XtOffsetOf(php_ds_map_t, std)); + return (php_ds_map_t *)((char*)(obj) - offsetof(php_ds_map_t, std)); } #define Z_DS_MAP(z) (php_ds_map_fetch_object(Z_OBJ(z))->map) diff --git a/src/php/objects/php_seq.h b/src/php/objects/php_seq.h index 10c5a2e..f624af9 100644 --- a/src/php/objects/php_seq.h +++ b/src/php/objects/php_seq.h @@ -9,7 +9,7 @@ typedef struct php_ds_seq { } php_ds_seq_t; static inline php_ds_seq_t *php_ds_seq_fetch_object(zend_object *obj) { - return (php_ds_seq_t *)((char*)(obj) - XtOffsetOf(php_ds_seq_t, std)); + return (php_ds_seq_t *)((char*)(obj) - offsetof(php_ds_seq_t, std)); } #define Z_DS_SEQ(z) (php_ds_seq_fetch_object(Z_OBJ(z))->seq) diff --git a/src/php/objects/php_set.h b/src/php/objects/php_set.h index 5c2760d..90bf103 100644 --- a/src/php/objects/php_set.h +++ b/src/php/objects/php_set.h @@ -9,7 +9,7 @@ typedef struct _php_ds_set_t { } php_ds_set_t; static inline php_ds_set_t *php_ds_set_fetch_object(zend_object *obj) { - return (php_ds_set_t *)((char*)(obj) - XtOffsetOf(php_ds_set_t, std)); + return (php_ds_set_t *)((char*)(obj) - offsetof(php_ds_set_t, std)); } #define Z_DS_SET(z) (php_ds_set_fetch_object(Z_OBJ(z))->set) From de284b1a2c78a2d6974bc65bb449df59c002ec76 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Wed, 12 Aug 2026 15:23:03 +0200 Subject: [PATCH 2/2] use zval_get_long_ex instead of zend_parse_parameter removed in 8.6 --- src/php/handlers/php_seq_handlers.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/php/handlers/php_seq_handlers.c b/src/php/handlers/php_seq_handlers.c index 8260171..ee27814 100644 --- a/src/php/handlers/php_seq_handlers.c +++ b/src/php/handlers/php_seq_handlers.c @@ -78,14 +78,7 @@ static void php_ds_seq_unset_dimension zend_long index = 0; ZVAL_DEREF(offset); - if (Z_TYPE_P(offset) == IS_LONG) { - index = Z_LVAL_P(offset); - - } else { - if (zend_parse_parameter(ZEND_PARSE_PARAMS_QUIET, 1, offset, "l", &index) == FAILURE) { - return; - } - } + index = zval_get_long_ex(offset, true); if (ds_seq_index_exists(seq, index)) { ds_seq_remove(seq, index, NULL);