@@ -1599,41 +1599,30 @@ static zend_long async_wait_process(zend_process_t process_h, const zend_ulong t
15991599 }
16001600#endif
16011601
1602- zend_async_process_event_t * event = ZEND_ASYNC_NEW_PROCESS_EVENT (process_h );
1603- if (UNEXPECTED (event == NULL )) {
1604- return -1 ;
1605- }
1606-
16071602 zend_coroutine_t * coroutine = ZEND_ASYNC_CURRENT_COROUTINE ;
16081603 if (UNEXPECTED (coroutine == NULL )) {
1609- ZEND_ASYNC_EVENT_RELEASE (& event -> base );
16101604 return -1 ;
16111605 }
16121606
1613- zend_async_waker_t * waker = timeout > 0
1614- ? zend_async_waker_new_with_timeout (coroutine , timeout , NULL )
1615- : zend_async_waker_new (coroutine );
1616-
1617- if (UNEXPECTED (waker == NULL )) {
1618- ZEND_ASYNC_EVENT_RELEASE (& event -> base );
1607+ if (UNEXPECTED (zend_async_waker_new_with_timeout (coroutine , timeout , NULL ) == NULL )) {
16191608 return -1 ;
16201609 }
16211610
1622- zend_coroutine_event_callback_t * callback = zend_async_coroutine_callback_new (
1623- coroutine , zend_async_waker_callback_resolve , 0
1624- );
1625-
1626- if (UNEXPECTED (callback == NULL )) {
1627- zend_async_waker_clean (coroutine );
1628- ZEND_ASYNC_EVENT_RELEASE (& event -> base );
1611+ zend_async_process_event_t * event = ZEND_ASYNC_NEW_PROCESS_EVENT (process_h );
1612+ if (UNEXPECTED (event == NULL )) {
16291613 return -1 ;
16301614 }
16311615
1632- zend_async_resume_when (coroutine , & event -> base , true , zend_async_waker_callback_resolve , callback );
1616+ zend_async_resume_when (coroutine , & event -> base , false , zend_async_waker_callback_resolve , NULL );
16331617
16341618 ZEND_ASYNC_SUSPEND ();
16351619
1636- zend_long exit_code = event -> exit_code ;
1620+ const zend_long exit_code = event -> exit_code ;
1621+ ZEND_ASYNC_EVENT_RELEASE (& event -> base );
1622+
1623+ if (UNEXPECTED (EG (exception ))) {
1624+ return -1 ;
1625+ }
16371626
16381627 return exit_code ;
16391628}
0 commit comments