]> granicus.if.org Git - php/commitdiff
Warnings to errors imageconvolution
authorMark <mrandall@digitellinc.com>
Tue, 3 Sep 2019 23:38:41 +0000 (01:38 +0200)
committerChristoph M. Becker <cmbecker69@gmx.de>
Wed, 4 Sep 2019 10:42:17 +0000 (12:42 +0200)
ext/gd/gd.c
ext/gd/tests/imageconvolution_error2.phpt
ext/gd/tests/imageconvolution_error3.phpt

index 52db8cea941adde551b02137c2845acee5bd3ecc..d0affc2d1611ea5bec20722909efaa72df46206c 100644 (file)
@@ -3698,23 +3698,23 @@ PHP_FUNCTION(imageconvolution)
 
        nelem = zend_hash_num_elements(Z_ARRVAL_P(hash_matrix));
        if (nelem != 3) {
-               php_error_docref(NULL, E_WARNING, "You must have 3x3 array");
-               RETURN_FALSE;
+               zend_throw_error(NULL, "Convolution matrix must be a 3x3 array");
+               return;
        }
 
        for (i=0; i<3; i++) {
                if ((var = zend_hash_index_find(Z_ARRVAL_P(hash_matrix), (i))) != NULL && Z_TYPE_P(var) == IS_ARRAY) {
                        if (zend_hash_num_elements(Z_ARRVAL_P(var)) != 3 ) {
-                               php_error_docref(NULL, E_WARNING, "You must have 3x3 array");
-                               RETURN_FALSE;
+                               zend_throw_error(NULL, "Convolution matrix must be a 3x3 array, matrix[%d] only has %d elements", i, zend_hash_num_elements(Z_ARRVAL_P(var)));
+                               return;
                        }
 
                        for (j=0; j<3; j++) {
                                if ((var2 = zend_hash_index_find(Z_ARRVAL_P(var), j)) != NULL) {
                                        matrix[i][j] = (float) zval_get_double(var2);
                                } else {
-                                       php_error_docref(NULL, E_WARNING, "You must have a 3x3 matrix");
-                                       RETURN_FALSE;
+                                       zend_throw_error(NULL, "Convolution matrix must be a 3x3 array, matrix[%d][%d] cannot be found (missing integer key)", i, j);
+                                       return;
                                }
                        }
                }
index 217e3e1547ff560928444b702f63f37c76cb9114..d8d0ca1ab2524184acd974cf20525628cb6f86a4 100644 (file)
@@ -9,6 +9,8 @@ if (!extension_loaded("gd")) die("skip GD not present");
 ?>
 --FILE--
 <?php
+require __DIR__ . '/func.inc';
+
 $image = imagecreatetruecolor(180, 30);
 
 // Writes the text and apply a gaussian blur on the image
@@ -19,8 +21,10 @@ $gaussian = array(
     array(2.0, 4.0, 2.0)
 );
 
-var_dump(imageconvolution($image, $gaussian, 16, 0));
+trycatch_dump(
+    fn() => imageconvolution($image, $gaussian, 16, 0)
+);
+
 ?>
---EXPECTF--
-Warning: imageconvolution(): You must have 3x3 array in %s on line %d
-bool(false)
+--EXPECT--
+!! [Error] Convolution matrix must be a 3x3 array
index 5f1ddc95bea5ccc87c0fc5b2ae800c30985d2e57..49aa2be9d08fb264e6c352116b0bb109d088546d 100644 (file)
@@ -9,6 +9,8 @@ if (!extension_loaded("gd")) die("skip GD not present");
 ?>
 --FILE--
 <?php
+require __DIR__ . '/func.inc';
+
 $image = imagecreatetruecolor(180, 30);
 
 // Writes the text and apply a gaussian blur on the image
@@ -20,8 +22,18 @@ $gaussian = array(
     array(1.0, 2.0)
 );
 
-var_dump(imageconvolution($image, $gaussian, 16, 0));
+$gaussian_bad_key = array(
+    array(1.0, 2.0, 1.0),
+    array(2.0, 4.0, 2.0),
+    array(1.0, 2.0, 'x' => 1.0)
+);
+
+trycatch_dump(
+    fn() => imageconvolution($image, $gaussian, 16, 0),
+    fn() => imageconvolution($image, $gaussian_bad_key, 16, 0)
+);
+
 ?>
---EXPECTF--
-Warning: imageconvolution(): You must have 3x3 array in %s on line %d
-bool(false)
+--EXPECT--
+!! [Error] Convolution matrix must be a 3x3 array, matrix[2] only has 2 elements
+!! [Error] Convolution matrix must be a 3x3 array, matrix[2][2] cannot be found (missing integer key)