[pecl-authentication-krb5] master: Fix for PHP 8.6.0alpha2 (#16)

From: Date: Sat, 08 Aug 2026 09:46:23 +0000
Subject: [pecl-authentication-krb5] master: Fix for PHP 8.6.0alpha2 (#16)
Groups: php.pecl.cvs 
Request: Send a blank email to pecl-cvs+get-28657@lists.php.net to get a copy of this message
Author: Remi Collet (remicollet) Committer: GitHub (web-flow) Pusher: mbechler Date: 2026-08-08T11:46:21+02:00 Commit: https://github.com/php/pecl-authentication-krb5/commit/6a12ec3f3c388ff54e6acfd5449adcff208cbd01 Raw diff: https://github.com/php/pecl-authentication-krb5/commit/6a12ec3f3c388ff54e6acfd5449adcff208cbd01.diff Fix for PHP 8.6.0alpha2 (#16) . The zval_is_true() alias of zend_is_true() has been removed. Call zend_is_true() directly instead. . The XtOffsetOf() alias of C’s offsetof() macro has been removed. Use offsetof() directly. . The zval_dtor() alias of zval_ptr_dtor_nogc() has been removed. Call zval_ptr_dtor_nogc() directly instead. Changed paths: M channel.c M gssapi.c M kadm.c M kadm5_policy.c M kadm5_principal.c M kadm5_tldata.c M krb5.c M negotiate_auth.c M php_krb5_compat.h Diff: diff --git a/channel.c b/channel.c index 7b7b11c..44a257e 100644 --- a/channel.c +++ b/channel.c @@ -57,7 +57,7 @@ zend_class_entry *krb5_ce_gss_channel; void php_krb5_gss_channel_object_free(zend_object *obj) { - krb5_gss_channel_object *object = (krb5_gss_channel_object*)((char *)obj - XtOffsetOf(krb5_gss_channel_object, std)); + krb5_gss_channel_object *object = (krb5_gss_channel_object*)((char *)obj - offsetof(krb5_gss_channel_object, std)); if ( object->data.initiator_address.value ) { efree(object->data.initiator_address.value); } @@ -78,7 +78,7 @@ int php_krb5_register_gss_channel() { krb5_ce_gss_channel = zend_register_internal_class(&gss_channel); krb5_ce_gss_channel->create_object = php_krb5_gss_channel_object_new; memcpy(&gss_channel_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); - gss_channel_handlers.offset = XtOffsetOf(krb5_gss_channel_object, std); + gss_channel_handlers.offset = offsetof(krb5_gss_channel_object, std); gss_channel_handlers.free_obj = php_krb5_gss_channel_object_free; return SUCCESS; } diff --git a/gssapi.c b/gssapi.c index 2423491..a5864e9 100644 --- a/gssapi.c +++ b/gssapi.c @@ -202,7 +202,7 @@ void php_krb5_gssapi_handle_error(OM_uint32 major, OM_uint32 minor TSRMLS_DC) /* {{{ */ void php_krb5_gssapi_context_object_free(zend_object *obj TSRMLS_DC) { OM_uint32 minor_status = 0; - krb5_gssapi_context_object *object = (krb5_gssapi_context_object*)((char *)obj - XtOffsetOf(krb5_gssapi_context_object, std)); + krb5_gssapi_context_object *object = (krb5_gssapi_context_object*)((char *)obj - offsetof(krb5_gssapi_context_object, std)); if(object->creds != GSS_C_NO_CREDENTIAL) { gss_release_cred(&minor_status, &object->creds); @@ -253,7 +253,7 @@ int php_krb5_gssapi_register_classes(TSRMLS_D) krb5_ce_gssapi_context->create_object = php_krb5_gssapi_context_object_new; memcpy(&krb5_gssapi_context_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); - krb5_gssapi_context_handlers.offset = XtOffsetOf(krb5_gssapi_context_object, std); + krb5_gssapi_context_handlers.offset = offsetof(krb5_gssapi_context_object, std); krb5_gssapi_context_handlers.free_obj = php_krb5_gssapi_context_object_free; php_krb5_register_gss_channel(); @@ -601,7 +601,7 @@ PHP_METHOD(GSSAPIContext, initSecContext) } if(ztokenbuf) { - zval_dtor(ztokenbuf); + zval_ptr_dtor_nogc(ztokenbuf); _ZVAL_STRINGL(ztokenbuf, tokenbuf.value, tokenbuf.length); } @@ -609,12 +609,12 @@ PHP_METHOD(GSSAPIContext, initSecContext) ASSERT_GSS_SUCCESS(status,minor_status,); if(zret_flags) { - zval_dtor(zret_flags); + zval_ptr_dtor_nogc(zret_flags); ZVAL_LONG(zret_flags, ret_flags); } if(ztime_rec) { - zval_dtor(ztime_rec); + zval_ptr_dtor_nogc(ztime_rec); ZVAL_LONG(ztime_rec, time_rec); } @@ -700,7 +700,7 @@ PHP_METHOD(GSSAPIContext, acceptSecContext) } if(ztokenbuf) { - zval_dtor(ztokenbuf); + zval_ptr_dtor_nogc(ztokenbuf); _ZVAL_STRINGL(ztokenbuf, tokenbuf.value, tokenbuf.length); } @@ -711,19 +711,19 @@ PHP_METHOD(GSSAPIContext, acceptSecContext) gss_buffer_desc nametmp; status = gss_display_name(&minor_status, src_name, &nametmp, NULL); ASSERT_GSS_SUCCESS(status,minor_status,); - zval_dtor(zsrc_name); + zval_ptr_dtor_nogc(zsrc_name); _ZVAL_STRINGL(zsrc_name, nametmp.value, nametmp.length); status = gss_release_buffer(&minor_status, &nametmp); ASSERT_GSS_SUCCESS(status,minor_status,); } if(zret_flags) { - zval_dtor(zret_flags); + zval_ptr_dtor_nogc(zret_flags); ZVAL_LONG(zret_flags, ret_flags); } if(ztime_rec) { - zval_dtor(ztime_rec); + zval_ptr_dtor_nogc(ztime_rec); ZVAL_LONG(ztime_rec, time_rec); } @@ -907,7 +907,7 @@ PHP_METHOD(GSSAPIContext, wrap) ASSERT_GSS_SUCCESS(status,minor_status,); if(zoutput) { - zval_dtor(zoutput); + zval_ptr_dtor_nogc(zoutput); _ZVAL_STRINGL(zoutput, output.value, output.length); } @@ -955,7 +955,7 @@ PHP_METHOD(GSSAPIContext, unwrap) ASSERT_GSS_SUCCESS(status,minor_status,); if(zoutput) { - zval_dtor(zoutput); + zval_ptr_dtor_nogc(zoutput); _ZVAL_STRINGL(zoutput, output.value, output.length); } diff --git a/kadm.c b/kadm.c index 16a5512..b02c719 100644 --- a/kadm.c +++ b/kadm.c @@ -100,7 +100,7 @@ void php_krb5_free_kadm5_object(krb5_kadm5_object *obj) { /* {{{ */ static void php_krb5_kadm5_object_free(zend_object *obj TSRMLS_DC) { - krb5_kadm5_object *object = (krb5_kadm5_object*)((char *)obj - XtOffsetOf(krb5_kadm5_object, std)); + krb5_kadm5_object *object = (krb5_kadm5_object*)((char *)obj - offsetof(krb5_kadm5_object, std)); kadm5_destroy(&object->handle); if ( object->config.realm != NULL ) { efree(object->config.realm); @@ -138,7 +138,7 @@ int php_krb5_kadm5_register_classes(TSRMLS_D) { krb5_ce_kadm5 = zend_register_internal_class(&kadm5 TSRMLS_CC); krb5_ce_kadm5->create_object = php_krb5_kadm5_object_new; memcpy(&krb5_kadm5_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); - krb5_kadm5_handlers.offset = XtOffsetOf(krb5_kadm5_object, std); + krb5_kadm5_handlers.offset = offsetof(krb5_kadm5_object, std); krb5_kadm5_handlers.free_obj = php_krb5_kadm5_object_free; /** register KADM5Principal **/ @@ -296,15 +296,15 @@ PHP_METHOD(KADM5, getPrincipal) ZVAL_BOOL(&args[2], noload); if(call_user_function(&krb5_ce_kadm5_principal->function_table, return_value, &ctor, &dummy_retval, 3, args TSRMLS_CC) == FAILURE) { - zval_dtor(&ctor); - zval_dtor(&dummy_retval); - zval_dtor(&args[2]); + zval_ptr_dtor_nogc(&ctor); + zval_ptr_dtor_nogc(&dummy_retval); + zval_ptr_dtor_nogc(&args[2]); zend_throw_exception(NULL, "Failed to instantiate KADM5Principal object", 0 TSRMLS_CC); return; } - zval_dtor(&ctor); - zval_dtor(&dummy_retval); - zval_dtor(&args[2]); + zval_ptr_dtor_nogc(&ctor); + zval_ptr_dtor_nogc(&dummy_retval); + zval_ptr_dtor_nogc(&args[2]); } /* }}} */ /* {{{ proto array KADM5::getPrinicipals([string $filter]) @@ -400,13 +400,13 @@ PHP_METHOD(KADM5, createPrincipal) ZVAL_STRING(&func, "load"); if(call_user_function(&krb5_ce_kadm5_principal->function_table, princ, &func, &dummy_retval, 0, NULL TSRMLS_CC) == FAILURE) { - zval_dtor(&func); - zval_dtor(&dummy_retval); + zval_ptr_dtor_nogc(&func); + zval_ptr_dtor_nogc(&dummy_retval); zend_throw_exception(NULL, "Failed to update KADM5Principal object", 0 TSRMLS_CC); return; } - zval_dtor(&func); - zval_dtor(&dummy_retval); + zval_ptr_dtor_nogc(&func); + zval_ptr_dtor_nogc(&dummy_retval); } /* {{{ proto KADM5Policy KADM5::getPolicy(string $policy) @@ -429,13 +429,13 @@ PHP_METHOD(KADM5, getPolicy) args[1] = *getThis(); if(call_user_function(&krb5_ce_kadm5_policy->function_table, return_value, &ctor, &dummy_retval, 2, args TSRMLS_CC) == FAILURE) { - zval_dtor(&ctor); - zval_dtor(&dummy_retval); + zval_ptr_dtor_nogc(&ctor); + zval_ptr_dtor_nogc(&dummy_retval); zend_throw_exception(NULL, "Failed to instantiate KADM5Policy object", 0 TSRMLS_CC); return; } - zval_dtor(&ctor); - zval_dtor(&dummy_retval); + zval_ptr_dtor_nogc(&ctor); + zval_ptr_dtor_nogc(&dummy_retval); } /* }}} */ /* {{{ proto void KADM5::createPolicy(KADM5Policy $policy) @@ -476,13 +476,13 @@ PHP_METHOD(KADM5, createPolicy) { ZVAL_STRING(&func, "load"); if(call_user_function(&krb5_ce_kadm5_policy->function_table, zpolicy, &func, &dummy_retval, 0, NULL TSRMLS_CC) == FAILURE) { - zval_dtor(&func); - zval_dtor(&dummy_retval); + zval_ptr_dtor_nogc(&func); + zval_ptr_dtor_nogc(&dummy_retval); zend_throw_exception(NULL, "Failed to update KADM5Policy object", 0 TSRMLS_CC); return; } - zval_dtor(&func); - zval_dtor(&dummy_retval); + zval_ptr_dtor_nogc(&func); + zval_ptr_dtor_nogc(&dummy_retval); } /* }}} */ /* {{{ proto array KADM5::getPolicies([string $filter]) diff --git a/kadm5_policy.c b/kadm5_policy.c index 324b275..295a769 100644 --- a/kadm5_policy.c +++ b/kadm5_policy.c @@ -93,7 +93,7 @@ static zend_function_entry krb5_kadm5_policy_functions[] = { zend_object_handlers krb5_kadm5_policy_handlers; static void php_krb5_kadm5_policy_object_free(zend_object *obj) { - krb5_kadm5_policy_object *object = (krb5_kadm5_policy_object*)((char *)obj - XtOffsetOf(krb5_kadm5_policy_object, std)); + krb5_kadm5_policy_object *object = (krb5_kadm5_policy_object*)((char *)obj - offsetof(krb5_kadm5_policy_object, std)); krb5_kadm5_object *conn = object->conn; if(object->policy) { efree(object->policy); @@ -110,7 +110,7 @@ int php_krb5_register_kadm5_policy(TSRMLS_D) { krb5_ce_kadm5_policy = zend_register_internal_class(&kadm5_policy TSRMLS_CC); krb5_ce_kadm5_policy->create_object = php_krb5_kadm5_policy_object_new; memcpy(&krb5_kadm5_policy_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); - krb5_kadm5_policy_handlers.offset = XtOffsetOf(krb5_kadm5_policy_object, std); + krb5_kadm5_policy_handlers.offset = offsetof(krb5_kadm5_policy_object, std); krb5_kadm5_policy_handlers.free_obj = php_krb5_kadm5_policy_object_free; return SUCCESS; } diff --git a/kadm5_principal.c b/kadm5_principal.c index bad65cd..97debde 100644 --- a/kadm5_principal.c +++ b/kadm5_principal.c @@ -105,7 +105,7 @@ zend_object_handlers krb5_kadm5_principal_handlers; /* KADM5Principal ctor/dtor */ static void php_krb5_kadm5_principal_object_free(zend_object *obj TSRMLS_DC) { - krb5_kadm5_principal_object *object = (krb5_kadm5_principal_object*)((char *)obj - XtOffsetOf(krb5_kadm5_principal_object, std)); + krb5_kadm5_principal_object *object = (krb5_kadm5_principal_object*)((char *)obj - offsetof(krb5_kadm5_principal_object, std)); krb5_kadm5_object *conn = object->conn; if(conn) { kadm5_free_principal_ent(conn->handle, &object->data); @@ -120,7 +120,7 @@ int php_krb5_register_kadm5_principal(TSRMLS_D) { krb5_ce_kadm5_principal = zend_register_internal_class(&kadm5_principal TSRMLS_CC); krb5_ce_kadm5_principal->create_object = php_krb5_kadm5_principal_object_new; memcpy(&krb5_kadm5_principal_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); - krb5_kadm5_principal_handlers.offset = XtOffsetOf(krb5_kadm5_principal_object, std); + krb5_kadm5_principal_handlers.offset = offsetof(krb5_kadm5_principal_object, std); krb5_kadm5_principal_handlers.free_obj = php_krb5_kadm5_principal_object_free; return SUCCESS; } @@ -164,13 +164,13 @@ PHP_METHOD(KADM5Principal, __construct) ZVAL_STRING(&func, "load"); if(call_user_function(&krb5_ce_kadm5_policy->function_table, getThis(), &func, &dummy_retval, 0, NULL TSRMLS_CC) == FAILURE) { - zval_dtor(&func); - zval_dtor(&dummy_retval); + zval_ptr_dtor_nogc(&func); + zval_ptr_dtor_nogc(&dummy_retval); zend_throw_exception(NULL, "Failed to update KADM5Policy object", 0 TSRMLS_CC); return; } - zval_dtor(&func); - zval_dtor(&dummy_retval); + zval_ptr_dtor_nogc(&func); + zval_ptr_dtor_nogc(&dummy_retval); } } } @@ -855,13 +855,13 @@ PHP_METHOD(KADM5Principal, getPolicy) ZVAL_STRING(&args[0], obj->data.policy); if(call_user_function(&krb5_ce_kadm5_policy->function_table, connobj, &func, return_value, 1, args TSRMLS_CC) == FAILURE) { - zval_dtor(&args[0]); - zval_dtor(&func); + zval_ptr_dtor_nogc(&args[0]); + zval_ptr_dtor_nogc(&func); zend_throw_exception(NULL, "Failed to instantiate KADM5Policy object", 0 TSRMLS_CC); return; } - zval_dtor(&args[0]); - zval_dtor(&func); + zval_ptr_dtor_nogc(&args[0]); + zval_ptr_dtor_nogc(&func); } } /* }}} */ diff --git a/kadm5_tldata.c b/kadm5_tldata.c index c301fc8..94db1da 100644 --- a/kadm5_tldata.c +++ b/kadm5_tldata.c @@ -42,7 +42,7 @@ zend_object_handlers krb5_kadm5_tldata_handlers; /* KADM5Principal ctor/dtor */ static void php_krb5_kadm5_tldata_object_free(zend_object *obj TSRMLS_DC) { - krb5_kadm5_tldata_object *object = (krb5_kadm5_tldata_object*)((char *)obj - XtOffsetOf(krb5_kadm5_tldata_object, std)); + krb5_kadm5_tldata_object *object = (krb5_kadm5_tldata_object*)((char *)obj - offsetof(krb5_kadm5_tldata_object, std)); if ( object->data.tl_data_contents ) { efree(object->data.tl_data_contents); } @@ -56,7 +56,7 @@ int php_krb5_register_kadm5_tldata(TSRMLS_D) { krb5_ce_kadm5_tldata = zend_register_internal_class(&kadm5_tldata TSRMLS_CC); krb5_ce_kadm5_tldata->create_object = php_krb5_kadm5_tldata_object_new; memcpy(&krb5_kadm5_tldata_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); - krb5_kadm5_tldata_handlers.offset = XtOffsetOf(krb5_kadm5_tldata_object, std); + krb5_kadm5_tldata_handlers.offset = offsetof(krb5_kadm5_tldata_object, std); krb5_kadm5_tldata_handlers.free_obj = php_krb5_kadm5_tldata_object_free; return SUCCESS; } diff --git a/krb5.c b/krb5.c index 5933a2a..bfd305a 100644 --- a/krb5.c +++ b/krb5.c @@ -157,7 +157,7 @@ PHP_MINIT_FUNCTION(krb5) krb5_ce_ccache = zend_register_internal_class(&krb5_ccache TSRMLS_CC); krb5_ce_ccache->create_object = php_krb5_ticket_object_new; memcpy(&krb5_ccache_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); - krb5_ccache_handlers.offset = XtOffsetOf(krb5_ccache_object, std); + krb5_ccache_handlers.offset = offsetof(krb5_ccache_object, std); krb5_ccache_handlers.free_obj = php_krb5_ccache_object_free; #ifdef HAVE_KADM5 @@ -245,7 +245,7 @@ PHP_MINFO_FUNCTION(krb5) /* {{{ */ static void php_krb5_ccache_object_free(zend_object *obj TSRMLS_DC) { - krb5_ccache_object *ticket = (krb5_ccache_object*)((char *)obj - XtOffsetOf(krb5_ccache_object, std)); + krb5_ccache_object *ticket = (krb5_ccache_object*)((char *)obj - offsetof(krb5_ccache_object, std)); krb5_cc_destroy(ticket->ctx, ticket->cc); krb5_free_context(ticket->ctx); @@ -304,21 +304,21 @@ static int php_krb5_parse_init_creds_opts(zval *opts, krb5_get_init_creds_opt *c /* forwardable */ tmp = zend_compat_hash_find(HASH_OF(opts), "forwardable", sizeof("forwardable")); if (tmp != NULL) { - krb5_get_init_creds_opt_set_forwardable(cred_opts, zval_is_true(tmp)); + krb5_get_init_creds_opt_set_forwardable(cred_opts, zend_is_true(tmp)); } /* proxiable */ tmp = zend_compat_hash_find(HASH_OF(opts), "proxiable", sizeof("proxiable")); if (tmp != NULL) { - krb5_get_init_creds_opt_set_proxiable(cred_opts, zval_is_true(tmp)); + krb5_get_init_creds_opt_set_proxiable(cred_opts, zend_is_true(tmp)); } #ifdef KRB5_GET_INIT_CREDS_OPT_CANONICALIZE /* canonicalize */ tmp = zend_compat_hash_find(HASH_OF(opts), "canonicalize", sizeof("canonicalize")); if (tmp != NULL) { - krb5_get_init_creds_opt_set_canonicalize(cred_opts, zval_is_true(tmp)); + krb5_get_init_creds_opt_set_canonicalize(cred_opts, zend_is_true(tmp)); } #endif /* KRB5_GET_INIT_CREDS_OPT_CANONICALIZE */ diff --git a/negotiate_auth.c b/negotiate_auth.c index 080bbe4..44eb680 100644 --- a/negotiate_auth.c +++ b/negotiate_auth.c @@ -110,7 +110,7 @@ static void php_krb5_negotiate_auth_object_free_data(krb5_negotiate_auth_object* /* {{{ */ static void php_krb5_negotiate_auth_object_free(zend_object *obj TSRMLS_DC) { - krb5_negotiate_auth_object *object = (krb5_negotiate_auth_object*)((char *)obj - XtOffsetOf(krb5_negotiate_auth_object, std)); + krb5_negotiate_auth_object *object = (krb5_negotiate_auth_object*)((char *)obj - offsetof(krb5_negotiate_auth_object, std)); php_krb5_negotiate_auth_object_free_data(object); zend_object_std_dtor(obj); } @@ -149,7 +149,7 @@ int php_krb5_negotiate_auth_register_classes(TSRMLS_D) { krb5_ce_negotiate_auth = zend_register_internal_class(&negotiate_auth TSRMLS_CC); krb5_ce_negotiate_auth->create_object = php_krb5_negotiate_auth_object_new; memcpy(&krb5_negotiate_auth_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); - krb5_negotiate_auth_handlers.offset = XtOffsetOf(krb5_negotiate_auth_object, std); + krb5_negotiate_auth_handlers.offset = offsetof(krb5_negotiate_auth_object, std); krb5_negotiate_auth_handlers.free_obj = php_krb5_negotiate_auth_object_free; return SUCCESS; diff --git a/php_krb5_compat.h b/php_krb5_compat.h index ae85bdf..c66ca53 100644 --- a/php_krb5_compat.h +++ b/php_krb5_compat.h @@ -30,15 +30,15 @@ typedef size_t strsize_t; #define _RETVAL_STRINGL(a,b) RETVAL_STRINGL(a,b) #define _RETVAL_STRING(a) RETVAL_STRING(a) -#define KRB5_CCACHE(zv) (krb5_ccache_object*)((char *)Z_OBJ_P(zv) - XtOffsetOf(krb5_ccache_object, std)) -#define KRB5_NEGOTIATE_AUTH(zv) (krb5_negotiate_auth_object*)((char *)Z_OBJ_P(zv) - XtOffsetOf(krb5_negotiate_auth_object, std)) -#define KRB5_GSSAPI_CONTEXT(zv) (krb5_gssapi_context_object*)((char *)Z_OBJ_P(zv) - XtOffsetOf(krb5_gssapi_context_object, std)) -#define KRB5_GSS_CHANNEL(zv) (krb5_gss_channel_object*)((char *)Z_OBJ_P(zv) - XtOffsetOf(krb5_gss_channel_object, std)) - -#define KRB5_KADM(zv) (krb5_kadm5_object*)((char *)Z_OBJ_P(zv) - XtOffsetOf(krb5_kadm5_object, std)) -#define KRB5_KADM_POLICY(zv) (krb5_kadm5_policy_object*)((char *)Z_OBJ_P(zv) - XtOffsetOf(krb5_kadm5_policy_object, std)) -#define KRB5_KADM_PRINCIPAL(zv) (krb5_kadm5_principal_object*)((char *)Z_OBJ_P(zv) - XtOffsetOf(krb5_kadm5_principal_object, std)) -#define KRB5_KADM_TLDATA(zv) (krb5_kadm5_tldata_object*)((char *)Z_OBJ_P(zv) - XtOffsetOf(krb5_kadm5_tldata_object, std)) +#define KRB5_CCACHE(zv) (krb5_ccache_object*)((char *)Z_OBJ_P(zv) - offsetof(krb5_ccache_object, std)) +#define KRB5_NEGOTIATE_AUTH(zv) (krb5_negotiate_auth_object*)((char *)Z_OBJ_P(zv) - offsetof(krb5_negotiate_auth_object, std)) +#define KRB5_GSSAPI_CONTEXT(zv) (krb5_gssapi_context_object*)((char *)Z_OBJ_P(zv) - offsetof(krb5_gssapi_context_object, std)) +#define KRB5_GSS_CHANNEL(zv) (krb5_gss_channel_object*)((char *)Z_OBJ_P(zv) - offsetof(krb5_gss_channel_object, std)) + +#define KRB5_KADM(zv) (krb5_kadm5_object*)((char *)Z_OBJ_P(zv) - offsetof(krb5_kadm5_object, std)) +#define KRB5_KADM_POLICY(zv) (krb5_kadm5_policy_object*)((char *)Z_OBJ_P(zv) - offsetof(krb5_kadm5_policy_object, std)) +#define KRB5_KADM_PRINCIPAL(zv) (krb5_kadm5_principal_object*)((char *)Z_OBJ_P(zv) - offsetof(krb5_kadm5_principal_object, std)) +#define KRB5_KADM_TLDATA(zv) (krb5_kadm5_tldata_object*)((char *)Z_OBJ_P(zv) - offsetof(krb5_kadm5_tldata_object, std)) static zend_always_inline zval* zend_compat_hash_index_find(HashTable *ht, zend_ulong idx) {

« previous php.pecl.cvs (#28657) next »