Commit a3675440b3b for php

commit a3675440b3b47f022f724d296e9bfadee40ec093
Author: Daniel Scherzer <daniel.e.scherzer@gmail.com>
Date:   Mon Oct 5 11:16:15 2026 -0700

    [`%pS` migration] Use `%pS` in ext/mysqli (#23159)

diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c
index 5e6319ae77c..374a7f67656 100644
--- a/ext/mysqli/mysqli.c
+++ b/ext/mysqli/mysqli.c
@@ -254,8 +254,8 @@ zval *mysqli_write_property(zend_object *object, zend_string *name, zval *value,
 		const mysqli_prop_handler *hnd = zend_hash_find_ptr(obj->prop_handler, name);
 		if (hnd) {
 			if (!hnd->write_func) {
-				zend_throw_error(NULL, "Cannot write read-only property %s::$%s",
-					ZSTR_VAL(object->ce->name), ZSTR_VAL(name));
+				zend_throw_error(NULL, "Cannot write read-only property %pS::$%pS",
+					object->ce->name, name);
 				return &EG(error_zval);
 			}

@@ -400,7 +400,7 @@ static MYSQLND *mysqli_convert_zv_to_mysqlnd(zval * zv)
 		mysqli_object *intern = Z_MYSQLI_P(zv);
 		if (!(my_res = (MYSQLI_RESOURCE *)intern->ptr)) {
 			/* We know that we have a mysqli object, so this failure should be emitted */
-			zend_throw_error(NULL, "%s object is already closed", ZSTR_VAL(intern->zo.ce->name));
+			zend_throw_error(NULL, "%pS object is already closed", intern->zo.ce->name);
 			return NULL;
 		}
 		mysql = (MY_MYSQL *)(my_res->ptr);
diff --git a/ext/mysqli/mysqli_nonapi.c b/ext/mysqli/mysqli_nonapi.c
index 2f4b6006821..f25f83a0b6b 100644
--- a/ext/mysqli/mysqli_nonapi.c
+++ b/ext/mysqli/mysqli_nonapi.c
@@ -538,13 +538,13 @@ PHP_FUNCTION(mysqli_fetch_object)
 		ce = zend_standard_class_def;
 	}
 	if (UNEXPECTED(ce->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS))) {
-		zend_throw_error(NULL, "Class %s cannot be instantiated", ZSTR_VAL(ce->name));
+		zend_throw_error(NULL, "Class %pS cannot be instantiated", ce->name);
 		RETURN_THROWS();
 	}
 	if (!ce->constructor && ctor_params && zend_hash_num_elements(ctor_params) > 0) {
 		zend_argument_value_error(ERROR_ARG_POS(3),
-			"must be empty when the specified class (%s) does not have a constructor",
-			ZSTR_VAL(ce->name)
+			"must be empty when the specified class (%pS) does not have a constructor",
+			ce->name
 		);
 		RETURN_THROWS();
 	}
@@ -703,12 +703,12 @@ static zend_result mysqlnd_zval_array_to_mysqlnd_array(zval *in_array, MYSQLND *
 			MYSQLI_RESOURCE *my_res;
 			mysqli_object *intern = Z_MYSQLI_P(elem);
 			if (!(my_res = (MYSQLI_RESOURCE *)intern->ptr)) {
-				zend_throw_error(NULL, "%s object is already closed", ZSTR_VAL(intern->zo.ce->name));
+				zend_throw_error(NULL, "%pS object is already closed", intern->zo.ce->name);
 				return FAILURE;
 		  	}
 			mysql = (MY_MYSQL*) my_res->ptr;
 			if (my_res->status < MYSQLI_STATUS_VALID) {
-				zend_throw_error(NULL, "%s object is not fully initialized", ZSTR_VAL(intern->zo.ce->name));
+				zend_throw_error(NULL, "%pS object is not fully initialized", intern->zo.ce->name);
 				return FAILURE;
 			}
 			(*out_array)[current++] = mysql->mysql;
@@ -737,7 +737,7 @@ static zend_result mysqlnd_zval_array_from_mysqlnd_array(MYSQLND **in_array, zva
 			MYSQLI_RESOURCE *my_res;
 			mysqli_object *intern = Z_MYSQLI_P(elem);
 			if (!(my_res = (MYSQLI_RESOURCE *)intern->ptr)) {
-				zend_throw_error(NULL, "%s object is already closed", ZSTR_VAL(intern->zo.ce->name));
+				zend_throw_error(NULL, "%pS object is already closed", intern->zo.ce->name);
 				return FAILURE;
 		  	}
 			mysql = (MY_MYSQL *) my_res->ptr;
diff --git a/ext/mysqli/mysqli_prop.c b/ext/mysqli/mysqli_prop.c
index 39446c62dda..2d21886e06d 100644
--- a/ext/mysqli/mysqli_prop.c
+++ b/ext/mysqli/mysqli_prop.c
@@ -35,7 +35,7 @@
 MYSQL *p; \
 if (!obj->ptr || !(MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr) { \
 	if (!quiet) { \
-		zend_throw_error(NULL, "%s object is already closed", ZSTR_VAL(obj->zo.ce->name)); \
+		zend_throw_error(NULL, "%pS object is already closed", obj->zo.ce->name); \
 	} \
 	return FAILURE; \
 } else { \
@@ -43,7 +43,7 @@ if (!obj->ptr || !(MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr) { \
 	p = (MYSQL *)((MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->mysql;\
 	if (!p) { \
 		if (!quiet) { \
-			zend_throw_error(NULL, "%s object is not fully initialized", ZSTR_VAL(obj->zo.ce->name)); \
+			zend_throw_error(NULL, "%pS object is not fully initialized", obj->zo.ce->name); \
 		} \
 		return FAILURE; \
 	} \
@@ -53,7 +53,7 @@ if (!obj->ptr || !(MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr) { \
 MYSQL_RES *p; \
 if (!obj->ptr) { \
 	if (!quiet) { \
-		zend_throw_error(NULL, "%s object is already closed", ZSTR_VAL(obj->zo.ce->name)); \
+		zend_throw_error(NULL, "%pS object is already closed", obj->zo.ce->name); \
 	} \
 	return FAILURE; \
 } else { \
@@ -65,7 +65,7 @@ if (!obj->ptr) { \
 MYSQL_STMT *p; \
 if (!obj->ptr) { \
 	if (!quiet) { \
-		zend_throw_error(NULL, "%s object is already closed", ZSTR_VAL(obj->zo.ce->name)); \
+		zend_throw_error(NULL, "%pS object is already closed", obj->zo.ce->name); \
 	} \
 	return FAILURE; \
 } else { \
diff --git a/ext/mysqli/mysqli_warning.c b/ext/mysqli/mysqli_warning.c
index a276ccf0b1f..96fcb0bbad8 100644
--- a/ext/mysqli/mysqli_warning.c
+++ b/ext/mysqli/mysqli_warning.c
@@ -140,7 +140,7 @@ static zend_result mysqli_warning_message(mysqli_object *obj, zval *retval, bool

 	if (!obj->ptr || !((MYSQLI_RESOURCE *)(obj->ptr))->ptr) {
 		if (!quiet) {
-			zend_throw_error(NULL, "%s object is already closed", ZSTR_VAL(obj->zo.ce->name));
+			zend_throw_error(NULL, "%pS object is already closed", obj->zo.ce->name);
 		}

 		return FAILURE;
@@ -160,7 +160,7 @@ static zend_result mysqli_warning_sqlstate(mysqli_object *obj, zval *retval, boo

 	if (!obj->ptr || !((MYSQLI_RESOURCE *)(obj->ptr))->ptr) {
 		if (!quiet) {
-			zend_throw_error(NULL, "%s object is already closed", ZSTR_VAL(obj->zo.ce->name));
+			zend_throw_error(NULL, "%pS object is already closed", obj->zo.ce->name);
 		}

 		return FAILURE;
@@ -180,7 +180,7 @@ static zend_result mysqli_warning_errno(mysqli_object *obj, zval *retval, bool q

 	if (!obj->ptr || !((MYSQLI_RESOURCE *)(obj->ptr))->ptr) {
 		if (!quiet) {
-			zend_throw_error(NULL, "%s object is already closed", ZSTR_VAL(obj->zo.ce->name));
+			zend_throw_error(NULL, "%pS object is already closed", obj->zo.ce->name);
 		}

 		return FAILURE;
diff --git a/ext/mysqli/php_mysqli_structs.h b/ext/mysqli/php_mysqli_structs.h
index 8ccead1a751..c6151065add 100644
--- a/ext/mysqli/php_mysqli_structs.h
+++ b/ext/mysqli/php_mysqli_structs.h
@@ -160,12 +160,12 @@ extern void php_mysqli_fetch_into_hash_aux(zval *return_value, MYSQL_RES * resul
 	MYSQLI_RESOURCE *my_res; \
 	mysqli_object *intern = Z_MYSQLI_P(__id); \
 	if (!(my_res = (MYSQLI_RESOURCE *)intern->ptr)) {\
-		zend_throw_error(NULL, "%s object is already closed", ZSTR_VAL(intern->zo.ce->name));\
+		zend_throw_error(NULL, "%pS object is already closed", intern->zo.ce->name);\
 		RETURN_THROWS();\
   	}\
 	__ptr = (__type)my_res->ptr; \
 	if (my_res->status < __check) { \
-		zend_throw_error(NULL, "%s object is not fully initialized", ZSTR_VAL(intern->zo.ce->name)); \
+		zend_throw_error(NULL, "%pS object is not fully initialized", intern->zo.ce->name); \
 		RETURN_THROWS();\
 	}\
 }
@@ -174,12 +174,12 @@ extern void php_mysqli_fetch_into_hash_aux(zval *return_value, MYSQL_RES * resul
 { \
 	MYSQLI_RESOURCE *my_res; \
 	if (!(my_res = (MYSQLI_RESOURCE *)(__obj->ptr))) {\
-		zend_throw_error(NULL, "%s object is already closed", ZSTR_VAL(intern->zo.ce->name));\
+		zend_throw_error(NULL, "%pS object is already closed", intern->zo.ce->name);\
 		return;\
 	}\
 	__ptr = (__type)my_res->ptr; \
 	if (my_res->status < __check) { \
-		zend_throw_error(NULL, "%s object is not fully initialized", ZSTR_VAL(intern->zo.ce->name)); \
+		zend_throw_error(NULL, "%pS object is not fully initialized", intern->zo.ce->name); \
 		return;\
 	}\
 }
@@ -188,7 +188,7 @@ extern void php_mysqli_fetch_into_hash_aux(zval *return_value, MYSQL_RES * resul
 { \
 	MYSQLI_FETCH_RESOURCE((__ptr), MY_MYSQL *, (__id), (__check)); \
 	if (!(__ptr)->mysql) { \
-		zend_throw_error(NULL, "%s object is not fully initialized", ZSTR_VAL(Z_OBJCE_P(__id)->name)); \
+		zend_throw_error(NULL, "%pS object is not fully initialized", Z_OBJCE_P(__id)->name); \
 		RETURN_THROWS(); \
 	} \
 }