From bb54694f4fe3ec4637cae22a118d6f5738d831d2 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Mon, 24 Aug 2020 16:23:19 +0200 Subject: [PATCH] Fix refcounting --- Zend/zend_execute_API.c | 1 + Zend/zend_vm_def.h | 2 ++ Zend/zend_vm_execute.h | 2 ++ 3 files changed, 5 insertions(+) diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 78a041d6ce..a62b9292ec 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -796,6 +796,7 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache) / if (EXPECTED(!must_wrap)) { ZVAL_COPY(param, arg); } else { + Z_TRY_ADDREF_P(arg); ZVAL_NEW_REF(param, arg); } } diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index fa70bf9f96..233138cded 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -5153,6 +5153,7 @@ ZEND_VM_C_LABEL(send_array): if (EXPECTED(!must_wrap)) { ZVAL_COPY(param, arg); } else { + Z_TRY_ADDREF_P(arg); ZVAL_NEW_REF(param, arg); } ZEND_CALL_NUM_ARGS(EX(call))++; @@ -5186,6 +5187,7 @@ ZEND_VM_C_LABEL(send_array): if (EXPECTED(!must_wrap)) { ZVAL_COPY(param, arg); } else { + Z_TRY_ADDREF_P(arg); ZVAL_NEW_REF(param, arg); } ZEND_CALL_NUM_ARGS(EX(call))++; diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 02b0ff24d1..941c1c48f6 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -2097,6 +2097,7 @@ send_array: if (EXPECTED(!must_wrap)) { ZVAL_COPY(param, arg); } else { + Z_TRY_ADDREF_P(arg); ZVAL_NEW_REF(param, arg); } ZEND_CALL_NUM_ARGS(EX(call))++; @@ -2130,6 +2131,7 @@ send_array: if (EXPECTED(!must_wrap)) { ZVAL_COPY(param, arg); } else { + Z_TRY_ADDREF_P(arg); ZVAL_NEW_REF(param, arg); } ZEND_CALL_NUM_ARGS(EX(call))++; -- 2.49.0