Skip to content

Commit 1ef298a

Browse files
committed
fix offsetof on PHP 8.6+
1 parent 1774650 commit 1ef298a

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

php_memcached.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,11 @@ typedef struct {
195195
} php_memc_result_callback_ctx_t;
196196

197197
static inline php_memc_object_t *php_memc_fetch_object(zend_object *obj) {
198+
#if PHP_VERSION_ID >= 80600
199+
return (php_memc_object_t *)((char *)obj - offsetof(php_memc_object_t, zo));
200+
#else
198201
return (php_memc_object_t *)((char *)obj - XtOffsetOf(php_memc_object_t, zo));
202+
#endif
199203
}
200204
#define Z_MEMC_OBJ_P(zv) php_memc_fetch_object(Z_OBJ_P(zv));
201205

@@ -280,7 +284,11 @@ typedef struct {
280284
} php_memc_server_t;
281285

282286
static inline php_memc_server_t *php_memc_server_fetch_object(zend_object *obj) {
287+
#if PHP_VERSION_ID >= 80600
288+
return (php_memc_server_t *)((char *)obj - offsetof(php_memc_server_t, zo));
289+
#else
283290
return (php_memc_server_t *)((char *)obj - XtOffsetOf(php_memc_server_t, zo));
291+
#endif
284292
}
285293
#define Z_MEMC_SERVER_P(zv) php_memc_server_fetch_object(Z_OBJ_P(zv))
286294

@@ -4404,7 +4412,11 @@ PHP_MINIT_FUNCTION(memcached)
44044412
zend_class_entry ce;
44054413

44064414
memcpy(&memcached_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
4415+
#if PHP_VERSION_ID >= 80600
4416+
memcached_object_handlers.offset = offsetof(php_memc_object_t, zo);
4417+
#else
44074418
memcached_object_handlers.offset = XtOffsetOf(php_memc_object_t, zo);
4419+
#endif
44084420
memcached_object_handlers.clone_obj = NULL;
44094421
memcached_object_handlers.free_obj = php_memc_object_free_storage;
44104422

@@ -4415,7 +4427,11 @@ PHP_MINIT_FUNCTION(memcached)
44154427

44164428
#ifdef HAVE_MEMCACHED_PROTOCOL
44174429
memcpy(&memcached_server_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
4430+
#if PHP_VERSION_ID >= 80600
4431+
memcached_server_object_handlers.offset = offsetof(php_memc_server_t, zo);
4432+
#else
44184433
memcached_server_object_handlers.offset = XtOffsetOf(php_memc_server_t, zo);
4434+
#endif
44194435
memcached_server_object_handlers.clone_obj = NULL;
44204436
memcached_server_object_handlers.free_obj = php_memc_server_free_storage;
44214437

0 commit comments

Comments
 (0)