Skip to content

Commit f471995

Browse files
committed
fix: ensure extended_data is set only in coroutine context
1 parent 95b12f7 commit f471995

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

Zend/zend_gc.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1856,11 +1856,15 @@ static zend_always_inline zend_result gc_call_destructors(uint32_t idx, uint32_t
18561856
GC_ADD_FLAGS(obj, IS_OBJ_DESTRUCTOR_CALLED);
18571857
GC_ADDREF(obj);
18581858
#ifdef PHP_ASYNC_API
1859-
ZEND_ASYNC_CURRENT_COROUTINE->extended_data = obj;
1859+
if (in_coroutine) {
1860+
ZEND_ASYNC_CURRENT_COROUTINE->extended_data = obj;
1861+
}
18601862
#endif
18611863
obj->handlers->dtor_obj(obj);
18621864
#ifdef PHP_ASYNC_API
1863-
ZEND_ASYNC_CURRENT_COROUTINE->extended_data = NULL;
1865+
if (in_coroutine) {
1866+
ZEND_ASYNC_CURRENT_COROUTINE->extended_data = NULL;
1867+
}
18641868
#endif
18651869
GC_TRACE_REF(obj, "returned from destructor");
18661870
GC_DELREF(obj);

0 commit comments

Comments
 (0)