Commit aad2b534deb for php.net

commit aad2b534deba3f43ec99dc3c09d049fe3bc96c72
Author: Weilin Du <weilindu@php.net>
Date:   Wed Aug 19 13:40:28 2026 +0800

    ext/gd: Fix incorrect argument numbers in GD affine function errors (#23356)

    This fixes wrong argument in error message in imageaffinematrixget and
    mageaffinematrixconcat.

diff --git a/NEWS b/NEWS
index 7216f5c5a7d..e273a86dfca 100644
--- a/NEWS
+++ b/NEWS
@@ -14,6 +14,10 @@ PHP                                                                        NEWS
   . Fixed a use-after-free when Dom\Element::setAttributeNS() replaces the
     value of an attribute whose child still has a live wrapper. (iliaal)

+- GD:
+  . Fixed imageaffinematrixget() and imageaffinematrixconcat() reporting the
+    wrong argument in error messages. (Weilin Du)
+
 - Intl:
   . Fixed a double-free when IntlGregorianCalendar construction fails after
     the ICU constructor adopts the TimeZone. (iliaal)
diff --git a/ext/gd/gd.c b/ext/gd/gd.c
index 311900ba7bb..c1258652259 100644
--- a/ext/gd/gd.c
+++ b/ext/gd/gd.c
@@ -4210,7 +4210,7 @@ PHP_FUNCTION(imageaffinematrixget)
 		case GD_AFFINE_SCALE: {
 			double x, y;
 			if (Z_TYPE_P(options) != IS_ARRAY) {
-				zend_argument_type_error(1, "must be of type array when using translate or scale");
+				zend_argument_type_error(2, "must be of type array when using translate or scale");
 				RETURN_THROWS();
 			}

@@ -4291,7 +4291,7 @@ PHP_FUNCTION(imageaffinematrixconcat)
 	}

 	if (zend_hash_num_elements(Z_ARRVAL_P(z_m2)) != 6) {
-		zend_argument_value_error(1, "must have 6 elements");
+		zend_argument_value_error(2, "must have 6 elements");
 		RETURN_THROWS();
 	}

diff --git a/ext/gd/tests/bug67248.phpt b/ext/gd/tests/bug67248.phpt
index a002f71c7fd..5f00b94fadc 100644
--- a/ext/gd/tests/bug67248.phpt
+++ b/ext/gd/tests/bug67248.phpt
@@ -17,8 +17,8 @@
 }
 ?>
 --EXPECTF--
-!! [TypeError] imageaffinematrixget(): Argument #1 ($type) must be of type array when using translate or scale
-!! [TypeError] imageaffinematrixget(): Argument #1 ($type) must be of type array when using translate or scale
+!! [TypeError] imageaffinematrixget(): Argument #2 ($options) must be of type array when using translate or scale
+!! [TypeError] imageaffinematrixget(): Argument #2 ($options) must be of type array when using translate or scale

 Warning: Object of class stdClass could not be converted to float in %s on line %d
 array(6) {
diff --git a/ext/gd/tests/imageaffinematrixconcat_error.phpt b/ext/gd/tests/imageaffinematrixconcat_error.phpt
new file mode 100644
index 00000000000..91b355547f3
--- /dev/null
+++ b/ext/gd/tests/imageaffinematrixconcat_error.phpt
@@ -0,0 +1,14 @@
+--TEST--
+imageaffinematrixconcat() reports the correct argument for an invalid matrix size
+--EXTENSIONS--
+gd
+--FILE--
+<?php
+try {
+    imageaffinematrixconcat([1, 0, 0, 1, 0, 0], []);
+} catch (Throwable $e) {
+    echo $e::class, ': ', $e->getMessage(), "\n";
+}
+?>
+--EXPECT--
+ValueError: imageaffinematrixconcat(): Argument #2 ($matrix2) must have 6 elements