Skip to content

Commit b2b294a

Browse files
committed
Fixed bug phpGH-16037 (Assertion failure in ext/date/php_date.c)
1 parent 9bc3418 commit b2b294a

File tree

3 files changed

+15
-5
lines changed

3 files changed

+15
-5
lines changed

NEWS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ PHP NEWS
2121
- Date:
2222
. Fixed bug GH-16454 (Unhandled INF in date_sunset() with tiny $utcOffset).
2323
(cmb)
24+
. Fixed bug GH-16037 (Assertion failure in ext/date/php_date.c). (Derick)
2425

2526
- DOM:
2627
. Fixed bug GH-16316 (DOMXPath breaks when not initialized properly).

ext/date/php_date.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2307,7 +2307,7 @@ static void add_common_properties(HashTable *myht, zend_object *zobj)
23072307

23082308
common = zend_std_get_properties(zobj);
23092309

2310-
ZEND_HASH_MAP_FOREACH_STR_KEY_VAL_IND(common, name, prop) {
2310+
ZEND_HASH_FOREACH_STR_KEY_VAL_IND(common, name, prop) {
23112311
if (zend_hash_add(myht, name, prop) != NULL) {
23122312
Z_TRY_ADDREF_P(prop);
23132313
}
@@ -2840,7 +2840,7 @@ static void restore_custom_datetime_properties(zval *object, HashTable *myht)
28402840
zend_string *prop_name;
28412841
zval *prop_val;
28422842

2843-
ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(myht, prop_name, prop_val) {
2843+
ZEND_HASH_FOREACH_STR_KEY_VAL(myht, prop_name, prop_val) {
28442844
if (!prop_name || (Z_TYPE_P(prop_val) == IS_REFERENCE) || date_time_is_internal_property(prop_name)) {
28452845
continue;
28462846
}
@@ -3883,7 +3883,7 @@ static void restore_custom_datetimezone_properties(zval *object, HashTable *myht
38833883
zend_string *prop_name;
38843884
zval *prop_val;
38853885

3886-
ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(myht, prop_name, prop_val) {
3886+
ZEND_HASH_FOREACH_STR_KEY_VAL(myht, prop_name, prop_val) {
38873887
if (!prop_name || (Z_TYPE_P(prop_val) == IS_REFERENCE) || date_timezone_is_internal_property(prop_name)) {
38883888
continue;
38893889
}
@@ -4512,7 +4512,7 @@ static void restore_custom_dateinterval_properties(zval *object, HashTable *myht
45124512
zend_string *prop_name;
45134513
zval *prop_val;
45144514

4515-
ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(myht, prop_name, prop_val) {
4515+
ZEND_HASH_FOREACH_STR_KEY_VAL(myht, prop_name, prop_val) {
45164516
if (!prop_name || (Z_TYPE_P(prop_val) == IS_REFERENCE) || date_interval_is_internal_property(prop_name)) {
45174517
continue;
45184518
}
@@ -5504,7 +5504,7 @@ static void restore_custom_dateperiod_properties(zval *object, HashTable *myht)
55045504
zend_string *prop_name;
55055505
zval *prop_val;
55065506

5507-
ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(myht, prop_name, prop_val) {
5507+
ZEND_HASH_FOREACH_STR_KEY_VAL(myht, prop_name, prop_val) {
55085508
if (!prop_name || (Z_TYPE_P(prop_val) == IS_REFERENCE) || date_period_is_internal_property(prop_name)) {
55095509
continue;
55105510
}

ext/date/tests/bug-gh16037.phpt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
--TEST--
2+
Test for bug GH-16037: Assertion failure in ext/date/php_date.c
3+
--FILE--
4+
<?php
5+
$di = (new DateInterval('P1Y'))->__unserialize([[]]);
6+
echo gettype($di);
7+
?>
8+
--EXPECT--
9+
NULL

0 commit comments

Comments
 (0)