Skip to content

Commit d2f8fcc

Browse files
committed
Comment
1 parent 49ef296 commit d2f8fcc

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

Zend/zend_weakrefs.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,10 @@ HashTable *zend_weakmap_get_object_key_entry_gc(zend_object *object, zval **tabl
524524
ZEND_ASSERT(zv);
525525
zend_get_gc_buffer_add_ptr(gc_buffer, zv);
526526
zend_get_gc_buffer_add_obj(gc_buffer, &wm->std);
527+
} else if (ZEND_WEAKREF_GET_TAG(tagged_ptr) == ZEND_WEAKREF_TAG_BARE_HT) {
528+
/* Bare HashTables are intentionally ignored, since they are
529+
* intended for internal usage by extensions and might not be
530+
* collectable. */
527531
}
528532
} ZEND_HASH_FOREACH_END();
529533
} else if (tag == ZEND_WEAKREF_TAG_MAP) {
@@ -532,6 +536,8 @@ HashTable *zend_weakmap_get_object_key_entry_gc(zend_object *object, zval **tabl
532536
ZEND_ASSERT(zv);
533537
zend_get_gc_buffer_add_ptr(gc_buffer, zv);
534538
zend_get_gc_buffer_add_obj(gc_buffer, &wm->std);
539+
} else if (ZEND_WEAKREF_GET_TAG(tagged_ptr) == ZEND_WEAKREF_TAG_BARE_HT) {
540+
/* Bare HashTables are intentionally ignored (see above) */
535541
}
536542

537543
zend_get_gc_buffer_use(gc_buffer, table, n);
@@ -558,13 +564,19 @@ HashTable *zend_weakmap_get_object_entry_gc(zend_object *object, zval **table, i
558564
zval *zv = zend_hash_index_find(&wm->ht, obj_key);
559565
ZEND_ASSERT(zv);
560566
zend_get_gc_buffer_add_ptr(gc_buffer, zv);
567+
} else if (ZEND_WEAKREF_GET_TAG(tagged_ptr) == ZEND_WEAKREF_TAG_BARE_HT) {
568+
/* Bare HashTables are intentionally ignored
569+
* (see zend_weakmap_get_object_key_entry_gc) */
561570
}
562571
} ZEND_HASH_FOREACH_END();
563572
} else if (tag == ZEND_WEAKREF_TAG_MAP) {
564573
zend_weakmap *wm = (zend_weakmap*) ptr;
565574
zval *zv = zend_hash_index_find(&wm->ht, obj_key);
566575
ZEND_ASSERT(zv);
567576
zend_get_gc_buffer_add_ptr(gc_buffer, zv);
577+
} else if (ZEND_WEAKREF_GET_TAG(tagged_ptr) == ZEND_WEAKREF_TAG_BARE_HT) {
578+
/* Bare HashTables are intentionally ignored
579+
* (see zend_weakmap_get_object_key_entry_gc) */
568580
}
569581

570582
zend_get_gc_buffer_use(gc_buffer, table, n);

0 commit comments

Comments
 (0)