Skip to content

Commit df6d756

Browse files
committed
Fixed build with PHP-7.3
1 parent 943d272 commit df6d756

22 files changed

+104
-106
lines changed

msgpack_convert.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,9 @@ int msgpack_convert_object(zval *return_value, zval *tpl, zval *value) /* {{{ */
300300
fci.params = &params;
301301
fci.no_separation = 1;
302302

303+
#if PHP_VERSION_ID < 70300
303304
fcc.initialized = 1;
305+
#endif
304306
fcc.function_handler = ce->constructor;
305307

306308
#if PHP_VERSION_ID < 70100

msgpack_pack.c

Lines changed: 64 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -280,15 +280,41 @@ static inline void msgpack_serialize_array(smart_str *buf, zval *val, HashTable
280280
value_noref = value;
281281
}
282282

283-
if ((Z_TYPE_P(value_noref) == IS_ARRAY && ZEND_HASH_GET_APPLY_COUNT(Z_ARRVAL_P(value_noref)) > 1)) {
283+
if (Z_TYPE_P(value_noref) == IS_ARRAY &&
284+
#if PHP_VERSION_ID < 70300
285+
ZEND_HASH_GET_APPLY_COUNT(Z_ARRVAL_P(value_noref))
286+
#else
287+
Z_IS_RECURSIVE_P(value_noref)
288+
#endif
289+
) {
284290
msgpack_pack_nil(buf);
285291
} else {
286-
if (Z_TYPE_P(value_noref) == IS_ARRAY && ZEND_HASH_APPLY_PROTECTION(Z_ARRVAL_P(value_noref))) {
292+
if (Z_TYPE_P(value_noref) == IS_ARRAY &&
293+
#if PHP_VERSION_ID < 70300
294+
ZEND_HASH_APPLY_PROTECTION(Z_ARRVAL_P(value_noref))
295+
#else
296+
Z_REFCOUNTED_P(value_noref)
297+
#endif
298+
) {
299+
#if PHP_VERSION_ID < 70300
287300
ZEND_HASH_INC_APPLY_COUNT(Z_ARRVAL_P(value_noref));
301+
#else
302+
Z_PROTECT_RECURSION_P(value_noref);
303+
#endif
288304
}
289305
msgpack_serialize_zval(buf, value, var_hash);
290-
if (Z_TYPE_P(value_noref) == IS_ARRAY && ZEND_HASH_APPLY_PROTECTION(Z_ARRVAL_P(value_noref))) {
306+
if (Z_TYPE_P(value_noref) == IS_ARRAY &&
307+
#if PHP_VERSION_ID < 70300
308+
ZEND_HASH_APPLY_PROTECTION(Z_ARRVAL_P(value_noref))
309+
#else
310+
Z_REFCOUNTED_P(value_noref)
311+
#endif
312+
) {
313+
#if PHP_VERSION_ID < 70300
291314
ZEND_HASH_DEC_APPLY_COUNT(Z_ARRVAL_P(value_noref));
315+
#else
316+
Z_UNPROTECT_RECURSION_P(value_noref);
317+
#endif
292318
}
293319
}
294320
} ZEND_HASH_FOREACH_END();
@@ -297,11 +323,21 @@ static inline void msgpack_serialize_array(smart_str *buf, zval *val, HashTable
297323
zval *data, *data_noref;
298324

299325
for (i = 0; i < n; i++) {
300-
if ((data = zend_hash_index_find(ht, i)) == NULL || &data == &val ||
301-
(Z_TYPE_P(data) == IS_ARRAY && ZEND_HASH_GET_APPLY_COUNT(Z_ARRVAL_P(data)) > 1)) {
326+
if ((data = zend_hash_index_find(ht, i)) == NULL || &data == &val || (Z_TYPE_P(data) == IS_ARRAY &&
327+
#if PHP_VERSION_ID < 70300
328+
ZEND_HASH_GET_APPLY_COUNT(Z_ARRVAL_P(data))
329+
#else
330+
Z_IS_RECURSIVE_P(data)
331+
#endif
332+
)) {
302333
msgpack_pack_nil(buf);
303334
} else if (Z_TYPE_P(data) == IS_REFERENCE && Z_TYPE_P(Z_REFVAL_P(data)) == IS_ARRAY &&
304-
ZEND_HASH_GET_APPLY_COUNT(Z_ARRVAL_P(Z_REFVAL_P(data))) > 1) {
335+
#if PHP_VERSION_ID < 70300
336+
ZEND_HASH_GET_APPLY_COUNT(Z_ARRVAL_P(Z_REFVAL_P(data)))
337+
#else
338+
Z_IS_RECURSIVE_P(Z_REFVAL_P(data))
339+
#endif
340+
) {
305341
msgpack_pack_nil(buf);
306342
} else {
307343
if (Z_TYPE_P(data) == IS_REFERENCE) {
@@ -310,14 +346,34 @@ static inline void msgpack_serialize_array(smart_str *buf, zval *val, HashTable
310346
data_noref = data;
311347
}
312348

313-
if (Z_TYPE_P(data_noref) == IS_ARRAY && ZEND_HASH_APPLY_PROTECTION(Z_ARRVAL_P(data_noref))) {
349+
if (Z_TYPE_P(data_noref) == IS_ARRAY &&
350+
#if PHP_VERSION_ID < 70300
351+
ZEND_HASH_APPLY_PROTECTION(Z_ARRVAL_P(data_noref))
352+
#else
353+
Z_REFCOUNTED_P(data_noref)
354+
#endif
355+
) {
356+
#if PHP_VERSION_ID < 70300
314357
ZEND_HASH_INC_APPLY_COUNT(Z_ARRVAL_P(data_noref));
358+
#else
359+
Z_PROTECT_RECURSION_P(data_noref);
360+
#endif
315361
}
316362

317363
msgpack_serialize_zval(buf, data, var_hash);
318364

319-
if (Z_TYPE_P(data_noref) == IS_ARRAY && ZEND_HASH_APPLY_PROTECTION(Z_ARRVAL_P(data_noref))) {
365+
if (Z_TYPE_P(data_noref) == IS_ARRAY &&
366+
#if PHP_VERSION_ID < 70300
367+
ZEND_HASH_APPLY_PROTECTION(Z_ARRVAL_P(data_noref))
368+
#else
369+
Z_REFCOUNTED_P(data_noref)
370+
#endif
371+
) {
372+
#if PHP_VERSION_ID < 70300
320373
ZEND_HASH_DEC_APPLY_COUNT(Z_ARRVAL_P(data_noref));
374+
#else
375+
Z_UNPROTECT_RECURSION_P(data_noref);
376+
#endif
321377
}
322378
}
323379
}

tests/009.phpt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,14 +69,14 @@ array(2) {
6969
}
7070
OK
7171
cyclic
72-
9182c0010082c0010082c0020002
72+
9182c0010082c00100c0
7373
array(1) {
7474
[0]=>
75-
&array(1) {
75+
array(1) {
7676
[0]=>
7777
array(1) {
7878
[0]=>
79-
*RECURSION*
79+
NULL
8080
}
8181
}
8282
}
@@ -93,11 +93,11 @@ array(1) {
9393
}
9494
array(1) {
9595
[0]=>
96-
&array(1) {
96+
array(1) {
9797
[0]=>
9898
array(1) {
9999
[0]=>
100-
*RECURSION*
100+
NULL
101101
}
102102
}
103103
}

tests/026.phpt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ var_dump($k);
4545
?>
4646
--EXPECT--
4747
array
48-
82a16182a162a163a164a165a16683c001a16182a162a163a164a165a16682c0020003
48+
82a16182a162a163a164a165a16683c001a16182a162a163a164a165a166c0
4949
array(2) {
5050
["a"]=>
5151
array(2) {
@@ -55,7 +55,7 @@ array(2) {
5555
string(1) "e"
5656
}
5757
["f"]=>
58-
&array(2) {
58+
array(2) {
5959
["a"]=>
6060
array(2) {
6161
["b"]=>
@@ -64,7 +64,7 @@ array(2) {
6464
string(1) "e"
6565
}
6666
["f"]=>
67-
*RECURSION*
67+
NULL
6868
}
6969
}
7070
OK
@@ -84,29 +84,29 @@ array(1) {
8484
}
8585
array(1) {
8686
["foo"]=>
87-
&array(3) {
87+
array(3) {
8888
[0]=>
8989
int(1)
9090
[1]=>
9191
int(2)
9292
[2]=>
9393
array(1) {
9494
["foo"]=>
95-
*RECURSION*
95+
NULL
9696
}
9797
}
9898
}
9999
array(1) {
100100
["foo"]=>
101-
&array(3) {
101+
array(3) {
102102
[0]=>
103103
int(1)
104104
[1]=>
105105
string(1) "b"
106106
[2]=>
107107
array(1) {
108108
["foo"]=>
109-
*RECURSION*
109+
NULL
110110
}
111111
}
112112
}

tests/060.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,11 +238,11 @@ array(2) {
238238
OK
239239
array(1) {
240240
[0]=>
241-
&array(1) {
241+
array(1) {
242242
[0]=>
243243
array(1) {
244244
[0]=>
245-
*RECURSION*
245+
NULL
246246
}
247247
}
248248
}

tests/061.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,11 +243,11 @@ array(2) {
243243
OK
244244
array(1) {
245245
[0]=>
246-
&array(1) {
246+
array(1) {
247247
[0]=>
248248
array(1) {
249249
[0]=>
250-
*RECURSION*
250+
NULL
251251
}
252252
}
253253
}

tests/064.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,11 +240,11 @@ array(2) {
240240
OK
241241
array(1) {
242242
[0]=>
243-
&array(1) {
243+
array(1) {
244244
[0]=>
245245
array(1) {
246246
[0]=>
247-
*RECURSION*
247+
NULL
248248
}
249249
}
250250
}

tests/065.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,11 +245,11 @@ array(2) {
245245
OK
246246
array(1) {
247247
[0]=>
248-
&array(1) {
248+
array(1) {
249249
[0]=>
250250
array(1) {
251251
[0]=>
252-
*RECURSION*
252+
NULL
253253
}
254254
}
255255
}

tests/070.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,11 +222,11 @@ array(2) {
222222
OK
223223
array(1) {
224224
[0]=>
225-
&array(1) {
225+
array(1) {
226226
[0]=>
227227
array(1) {
228228
[0]=>
229-
*RECURSION*
229+
NULL
230230
}
231231
}
232232
}

tests/071.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,11 +224,11 @@ array(2) {
224224
OK
225225
array(1) {
226226
[0]=>
227-
&array(1) {
227+
array(1) {
228228
[0]=>
229229
array(1) {
230230
[0]=>
231-
*RECURSION*
231+
NULL
232232
}
233233
}
234234
}

0 commit comments

Comments
 (0)