From: Nikita Popov Date: Wed, 13 Jul 2016 21:55:19 +0000 (+0200) Subject: Add missing call opcodes in cleanup_unfinished_calls() X-Git-Tag: php-7.1.0beta1~61^2~3^2~5 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=82ce2a4e4dabb011230370a110218995b7e50343;p=php Add missing call opcodes in cleanup_unfinished_calls() Otherwise we may leak if an exception is thrown from them. --- diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index cda98fd8a4..af90b442f0 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -2444,9 +2444,12 @@ static void cleanup_unfinished_calls(zend_execute_data *execute_data, uint32_t o if (UNEXPECTED(opline->opcode == ZEND_INIT_FCALL || opline->opcode == ZEND_INIT_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME || opline->opcode == ZEND_INIT_DYNAMIC_CALL || + opline->opcode == ZEND_INIT_USER_CALL || opline->opcode == ZEND_INIT_METHOD_CALL || - opline->opcode == ZEND_INIT_STATIC_METHOD_CALL)) { + opline->opcode == ZEND_INIT_STATIC_METHOD_CALL || + opline->opcode == ZEND_NEW)) { ZEND_ASSERT(op_num); opline--; }