summaryrefslogtreecommitdiffstats
path: root/imagick-php81.patch
blob: 8a799fe1fbb90d823682be46a34d6269200005be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
From 81cc92ec24549c86be875b1a9977419a76f3471d Mon Sep 17 00:00:00 2001
From: Danack <Danack@basereality.com>
Date: Sat, 5 Jun 2021 15:25:05 +0100
Subject: [PATCH] Add ifdef for PHP 8.1

---
 imagick.c          | 2 +-
 php_imagick_defs.h | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/imagick.c b/imagick.c
index f7a94ae0..d2cf9fef 100644
--- a/imagick.c
+++ b/imagick.c
@@ -3829,7 +3829,7 @@ PHP_MINIT_FUNCTION(imagick)
 #endif
 
 	php_imagick_sc_entry = zend_register_internal_class(&ce TSRMLS_CC);
-	zend_class_implements(php_imagick_sc_entry TSRMLS_CC, 2, zend_ce_iterator, spl_ce_Countable);
+	zend_class_implements(php_imagick_sc_entry TSRMLS_CC, 2, zend_ce_iterator, im_ce_countable);
 
 	/*
 		Initialize the class (ImagickDraw)
diff --git a/php_imagick_defs.h b/php_imagick_defs.h
index 859f35df..6017b33c 100644
--- a/php_imagick_defs.h
+++ b/php_imagick_defs.h
@@ -79,6 +79,11 @@
 	#define im_long long
 #endif
 
+#if PHP_VERSION_ID >= 80100
+    #define im_ce_countable zend_ce_countable
+#else
+    #define im_ce_countable spl_ce_Countable
+#endif
 
 typedef struct _php_imagick_callback {
 	void ***thread_ctx;
From 9a48afcca65beed794dee3da15eef9c077eba487 Mon Sep 17 00:00:00 2001
From: Danack <Danack@basereality.com>
Date: Sat, 5 Jun 2021 15:43:03 +0100
Subject: [PATCH] Explicit casts to make php 8.1 happy.

---
 tests/244_Tutorial_psychedelicFontGif_basic.phpt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/244_Tutorial_psychedelicFontGif_basic.phpt b/tests/244_Tutorial_psychedelicFontGif_basic.phpt
index 3fde1d74..a1bd1d98 100644
--- a/tests/244_Tutorial_psychedelicFontGif_basic.phpt
+++ b/tests/244_Tutorial_psychedelicFontGif_basic.phpt
@@ -34,7 +34,7 @@ function psychedelicFontGif($name = 'Danack') {
             $draw->setStrokeColor($color);
             $draw->setFillColor($color);
             $draw->setStrokeWidth($strokeWidth * 3 * $scale);
-            $draw->annotation(60 * $scale, 165 * $scale, $name);
+            $draw->annotation((int)(60 * $scale), (int)(165 * $scale), $name);
         }
 
         $draw->setStrokeColor('none');
@@ -44,7 +44,7 @@ function psychedelicFontGif($name = 'Danack') {
 
         //Create an image object which the draw commands can be rendered into
         $imagick = new \Imagick();
-        $imagick->newImage(650 * $scale, 230 * $scale, "#eee");
+        $imagick->newImage((int)(650 * $scale), (int)(230 * $scale), "#eee");
         $imagick->setImageFormat("png");
 
         //Render the draw commands in the ImagickDraw object
From a6ff2498e3f4cd1f9a200d5695dfddba458a9064 Mon Sep 17 00:00:00 2001
From: Danack <Danack@basereality.com>
Date: Sat, 5 Jun 2021 15:44:17 +0100
Subject: [PATCH] Explicit casts to make php 8.1 happy.

---
 tests/245_Tutorial_screenEmbed_basic.phpt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/245_Tutorial_screenEmbed_basic.phpt b/tests/245_Tutorial_screenEmbed_basic.phpt
index e25229da..36b9fbcf 100644
--- a/tests/245_Tutorial_screenEmbed_basic.phpt
+++ b/tests/245_Tutorial_screenEmbed_basic.phpt
@@ -33,7 +33,7 @@ function screenEmbed() {
     $overlay->modulateImage(97, 100, 0);
     $overlay->distortImage(\Imagick::DISTORTION_PERSPECTIVE, $points, true);
 
-    $imagick->compositeImage($overlay, \Imagick::COMPOSITE_OVER, 364.5 - $offset, 23.5);
+    $imagick->compositeImage($overlay, \Imagick::COMPOSITE_OVER, (int)(364.5 - $offset), 23);
 
     $bytes = $imagick->getImageBlob();
     if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
From 8d550128a271b2d6659e81b023e25b2ed0b787fa Mon Sep 17 00:00:00 2001
From: Danack <Danack@basereality.com>
Date: Sat, 5 Jun 2021 15:46:21 +0100
Subject: [PATCH] Explicit casts to make php 8.1 happy.

---
 tests/049_Imagick_deskewImage_basic.phpt | 7 ++++++-
 tests/110_Imagick_resizeImage_basic.phpt | 4 ++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/tests/049_Imagick_deskewImage_basic.phpt b/tests/049_Imagick_deskewImage_basic.phpt
index 96364c2b..0ec546f2 100644
--- a/tests/049_Imagick_deskewImage_basic.phpt
+++ b/tests/049_Imagick_deskewImage_basic.phpt
@@ -26,7 +26,12 @@ function deskewImage($threshold) {
     $deskewImagick->cropImage($deskewImagick->getImageWidth() - $trim, $deskewImagick->getImageHeight(), $trim, 0);
     $imagick->cropImage($imagick->getImageWidth() - $trim, $imagick->getImageHeight(), $trim, 0);
     $deskewImagick->resizeimage($deskewImagick->getImageWidth() / 2, $deskewImagick->getImageHeight() / 2, \Imagick::FILTER_LANCZOS, 1);
-    $imagick->resizeimage($imagick->getImageWidth() / 2, $imagick->getImageHeight() / 2, \Imagick::FILTER_LANCZOS, 1);
+    $imagick->resizeimage(
+        (int)($imagick->getImageWidth() / 2),
+        (int)($imagick->getImageHeight() / 2),
+        \Imagick::FILTER_LANCZOS,
+        1
+    );
     $newCanvas = new \Imagick();
     $newCanvas->newimage($imagick->getImageWidth() + $deskewImagick->getImageWidth() + 20, $imagick->getImageHeight(), 'red', 'jpg');
     $newCanvas->compositeimage($imagick, \Imagick::COMPOSITE_COPY, 5, 0);
diff --git a/tests/110_Imagick_resizeImage_basic.phpt b/tests/110_Imagick_resizeImage_basic.phpt
index c800e5fa..0628afb4 100644
--- a/tests/110_Imagick_resizeImage_basic.phpt
+++ b/tests/110_Imagick_resizeImage_basic.phpt
@@ -32,8 +32,8 @@ function resizeImage($width, $height, $filterType, $blur, $bestFit, $cropZoom) {
         $imagick->cropimage(
             $newWidth,
             $newHeight,
-            ($cropWidth - $newWidth) / 2,
-            ($cropHeight - $newHeight) / 2
+            (int)(($cropWidth - $newWidth) / 2),
+            (int)(($cropHeight - $newHeight) / 2)
         );
 
         $imagick->scaleimage(
From c7578c71285fb11d129abb7b9781c91db91f93da Mon Sep 17 00:00:00 2001
From: Danack <Danack@basereality.com>
Date: Sat, 5 Jun 2021 19:23:29 +0100
Subject: [PATCH] Fix parsing of nullable long parameters.

---
 imagick_class.c | 15 +++++++++++++--
 runTests.sh     |  7 +++++--
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/imagick_class.c b/imagick_class.c
index 23e42de0..9a390f2b 100644
--- a/imagick_class.c
+++ b/imagick_class.c
@@ -7855,13 +7855,24 @@ zend_bool s_resize_bounding_box(MagickWand *magick_wand, im_long box_width, im_l
 */
 PHP_METHOD(imagick, thumbnailimage)
 {
-	im_long width, height, new_width, new_height;
+	im_long width = 0, height = 0, new_width, new_height;
 	php_imagick_object *intern;
 	zend_bool bestfit = 0, fill = 0;
 	zend_bool legacy = 0;
 
+    // Changing longs to be nullable "l!", means that zpp
+    // wants to write whether they were null to a variable.
+	bool width_is_null = 1;
+	bool height_is_null = 1;
+
+
 	/* Parse parameters given to function */
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll|bbb", &width, &height, &bestfit, &fill, &legacy) == FAILURE) {
+	if (zend_parse_parameters(
+	    ZEND_NUM_ARGS() TSRMLS_CC,
+	    "l!l!|bbb",
+	    &width, &width_is_null,
+	    &height, &height_is_null,
+	    &bestfit, &fill, &legacy) == FAILURE) {
 		return;
 	}
 

From 212de567ef514e2a07f0c55502fe7ceb66ece6a7 Mon Sep 17 00:00:00 2001
From: Danack <Danack@basereality.com>
Date: Sat, 5 Jun 2021 19:46:41 +0100
Subject: [PATCH] Wrap param parsing to use old method, until versions that
 don't require a compiler that understands bools are dropped.

---
 imagick_class.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/imagick_class.c b/imagick_class.c
index 9a390f2b..2f9e6909 100644
--- a/imagick_class.c
+++ b/imagick_class.c
@@ -7860,11 +7860,16 @@ PHP_METHOD(Imagick, thumbnailImage)
 	zend_bool bestfit = 0, fill = 0;
 	zend_bool legacy = 0;
 
+#if PHP_VERSION_ID < 80100
+    // This uses an implicit conversion of null to 0 for longs
+    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll|bbb", &width, &height, &bestfit, &fill, &legacy) == FAILURE) {
+	    return;
+	}
+#else
     // Changing longs to be nullable "l!", means that zpp
     // wants to write whether they were null to a variable.
-	bool width_is_null = 1;
-	bool height_is_null = 1;
-
+	bool width_is_null = 0;
+	bool height_is_null = 0;
 
 	/* Parse parameters given to function */
 	if (zend_parse_parameters(
@@ -7875,6 +7880,7 @@ PHP_METHOD(Imagick, thumbnailImage)
 	    &bestfit, &fill, &legacy) == FAILURE) {
 		return;
 	}
+#endif
 
 	intern = Z_IMAGICK_P(getThis());
 	if (php_imagick_ensure_not_empty (intern->magick_wand) == 0)
From 78c9daa8bfc56aa5806b062ee5605f57e81f063e Mon Sep 17 00:00:00 2001
From: Remi Collet <remi@remirepo.net>
Date: Wed, 9 Jun 2021 09:39:25 +0200
Subject: [PATCH 1/2] get rid of ZVAL_NEW_ARR

---
 imagick_class.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/imagick_class.c b/imagick_class.c
index e041f4e..2254313 100644
--- a/imagick_class.c
+++ b/imagick_class.c
@@ -6841,7 +6841,6 @@ PHP_METHOD(Imagick, getImageChannelStatistics)
 #if MagickLibVersion >= 0x700
 	for (i=0; i < sizeof(channels)/sizeof(channels[0]); i++) {
 #ifdef ZEND_ENGINE_3
-		ZVAL_NEW_ARR(&tmp);
 		array_init(&tmp);
 		add_assoc_double(&tmp, "mean", statistics[i].mean);
 		add_assoc_double(&tmp, "minima", statistics[i].minima);
@@ -6869,7 +6868,6 @@ PHP_METHOD(Imagick, getImageChannelStatistics)
 #else //below MagickLibVersion>= 0x700
 	for (i = 0; i < elements ; i++) {
 #ifdef ZEND_ENGINE_3
-		ZVAL_NEW_ARR(&tmp);
 		array_init(&tmp);
 		add_assoc_double(&tmp, "mean", statistics[channels[i]].mean);
 		add_assoc_double(&tmp, "minima", statistics[channels[i]].minima);
@@ -8703,7 +8701,7 @@ PHP_METHOD(Imagick, identifyImage)
 	// Geometry is an associative array
 	
 #ifdef ZEND_ENGINE_3
-	ZVAL_NEW_ARR(&array);
+	array_init(&array);
 	pArray = &array;
 #else
 	MAKE_STD_ZVAL(array);

From 3c387a2b1a0b3a9cc08f878a2541b814f3b831bf Mon Sep 17 00:00:00 2001
From: Remi Collet <remi@remirepo.net>
Date: Wed, 9 Jun 2021 09:40:16 +0200
Subject: [PATCH 2/2] fix Implicit conversion

---
 tests/172_ImagickPixel_setColorValueQuantum_basic.phpt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/172_ImagickPixel_setColorValueQuantum_basic.phpt b/tests/172_ImagickPixel_setColorValueQuantum_basic.phpt
index e69108e..bf68edf 100644
--- a/tests/172_ImagickPixel_setColorValueQuantum_basic.phpt
+++ b/tests/172_ImagickPixel_setColorValueQuantum_basic.phpt
@@ -13,7 +13,7 @@ function setColorValueQuantum() {
 
     $draw = new \ImagickDraw();
     $color = new \ImagickPixel('blue');
-    $color->setcolorValueQuantum(\Imagick::COLOR_RED, 128 * $quantumRange['quantumRangeLong'] / 256);
+    $color->setcolorValueQuantum(\Imagick::COLOR_RED, (int)(128 * $quantumRange['quantumRangeLong'] / 256));
 
     $draw->setstrokewidth(1.0);
     $draw->setStrokeColor($color);
@@ -33,4 +33,4 @@ setColorValueQuantum() ;
 echo "Ok";
 ?>
 --EXPECTF--
-Ok
\ No newline at end of file
+Ok