]> granicus.if.org Git - php/commitdiff
Fix refcounting
authorNikita Popov <nikita.ppv@gmail.com>
Mon, 24 Aug 2020 14:23:19 +0000 (16:23 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Mon, 24 Aug 2020 14:23:19 +0000 (16:23 +0200)
Zend/zend_execute_API.c
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 78a041d6ce2a7ce829ef16880e12a15b8d9ead48..a62b9292ece54ce7216c06d8d2b1c59c60d3bba2 100644 (file)
@@ -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);
                }
        }
index fa70bf9f966adce9edf5679aa93b6329d5e0cae0..233138cded1dbc49da857289ccab01fb83d0415b 100644 (file)
@@ -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))++;
index 02b0ff24d15b65ea658df384c0b5481700904e8b..941c1c48f66c7250d5fff7e2160c4fba44bf5697 100644 (file)
@@ -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))++;