Skip to content

Commit ec35a11

Browse files
committed
Fix OpCache not recursively storing in persistent memory sub intersection types
1 parent efacc3c commit ec35a11

File tree

3 files changed

+8
-2
lines changed

3 files changed

+8
-2
lines changed

Zend/tests/type_declarations/dnf_types/variance/valid8.phpt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
--TEST--
22
Covariant replacement of iterable type with intersection type in DNF type
3-
--XFAIL--
4-
Issue with delayed variance
53
--FILE--
64
<?php
75

ext/opcache/zend_persist.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,10 @@ static void zend_persist_type(zend_type *type) {
379379

380380
zend_type *single_type;
381381
ZEND_TYPE_FOREACH(*type, single_type) {
382+
if (ZEND_TYPE_HAS_LIST(*single_type)) {
383+
zend_persist_type(single_type);
384+
continue;
385+
}
382386
if (ZEND_TYPE_HAS_NAME(*single_type)) {
383387
zend_string *type_name = ZEND_TYPE_NAME(*single_type);
384388
zend_accel_store_interned_string(type_name);

ext/opcache/zend_persist_calc.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,10 @@ static void zend_persist_type_calc(zend_type *type)
187187

188188
zend_type *single_type;
189189
ZEND_TYPE_FOREACH(*type, single_type) {
190+
if (ZEND_TYPE_HAS_LIST(*single_type)) {
191+
zend_persist_type_calc(single_type);
192+
continue;
193+
}
190194
if (ZEND_TYPE_HAS_NAME(*single_type)) {
191195
zend_string *type_name = ZEND_TYPE_NAME(*single_type);
192196
ADD_INTERNED_STRING(type_name);

0 commit comments

Comments
 (0)