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

[email protected] (Remi Collet via GitHub)
Newsgroups php.pecl.cvs
Message-ID <[email protected]>
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)
 {
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.