Commit ef87a146fb8 for php.net

commit ef87a146fb8a12398bc0ffc58b3493991f818167
Author: Niels Dossche <7771979+ndossche@users.noreply.github.com>
Date:   Mon Dec 22 15:39:09 2025 -0800

    pgsql: Don't allocate memory for default arguments (#20757)

diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c
index 77425b25aee..e3d8cb82ece 100644
--- a/ext/pgsql/pgsql.c
+++ b/ext/pgsql/pgsql.c
@@ -3350,9 +3350,8 @@ PHP_FUNCTION(pg_copy_to)
 	pgsql_link_handle *link;
 	zend_string *table_name;
 	zend_string *pg_delimiter = NULL;
-	char *pg_null_as = NULL;
+	char *pg_null_as = "\\\\N";
 	size_t pg_null_as_len = 0;
-	bool free_pg_null = false;
 	char *query;
 	PGconn *pgsql;
 	PGresult *pgsql_result;
@@ -3377,10 +3376,6 @@ PHP_FUNCTION(pg_copy_to)
 		zend_argument_value_error(3, "must be one character");
 		RETURN_THROWS();
 	}
-	if (!pg_null_as) {
-		pg_null_as = estrdup("\\\\N");
-		free_pg_null = true;
-	}

 	spprintf(&query, 0, "COPY %s TO STDOUT DELIMITER E'%c' NULL AS E'%s'", ZSTR_VAL(table_name), *ZSTR_VAL(pg_delimiter), pg_null_as);

@@ -3388,9 +3383,6 @@ PHP_FUNCTION(pg_copy_to)
 		PQclear(pgsql_result);
 	}
 	pgsql_result = PQexec(pgsql, query);
-	if (free_pg_null) {
-		efree(pg_null_as);
-	}
 	efree(query);

 	if (pgsql_result) {
@@ -3475,9 +3467,8 @@ PHP_FUNCTION(pg_copy_from)
 	zval *value;
 	zend_string *table_name;
 	zend_string *pg_delimiter = NULL;
-	char *pg_null_as = NULL;
+	char *pg_null_as = "\\\\N";
 	size_t pg_null_as_len;
-	bool pg_null_as_free = false;
 	char *query;
 	PGconn *pgsql;
 	PGresult *pgsql_result;
@@ -3502,10 +3493,6 @@ PHP_FUNCTION(pg_copy_from)
 		zend_argument_value_error(4, "must be one character");
 		RETURN_THROWS();
 	}
-	if (!pg_null_as) {
-		pg_null_as = estrdup("\\\\N");
-		pg_null_as_free = true;
-	}

 	spprintf(&query, 0, "COPY %s FROM STDIN DELIMITER E'%c' NULL AS E'%s'", ZSTR_VAL(table_name), *ZSTR_VAL(pg_delimiter), pg_null_as);
 	while ((pgsql_result = PQgetResult(pgsql))) {
@@ -3513,9 +3500,6 @@ PHP_FUNCTION(pg_copy_from)
 	}
 	pgsql_result = PQexec(pgsql, query);

-	if (pg_null_as_free) {
-		efree(pg_null_as);
-	}
 	efree(query);

 	if (pgsql_result) {